4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
1

Подобие почтового клиента - проблема с русским языком

08.06.2016, 10:13. Показов 719. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал программу,наподобие почтового клиента. Все работает, сообщения в отдельные файлы отправляются, но с русским языком беда - совсем ничего не приходит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2016, 10:13
Ответы с готовыми решениями:

Проблема с русским языком
Вот такое у меня во всех приложениях с русским языком. Использую Windows LTSC 1809. Помогите...

Проблема с русским языком
В VB6 если в коде переключить язык ввода на русский, то печатает абракадабру. Может кто-нибудь...

проблема с русским языком
народ подскажите кто знает! имею базу данных с значениями полей как на русском так и на англ...

HTMLEncode - Проблема с русским языком
Заранее извиняюсь, если кому то вопрос покажется глупым. В процессе изучения разбирал скрипт...

7
Эксперт по компьютерным сетям
5889 / 3347 / 1033
Регистрация: 03.11.2009
Сообщений: 9,974
08.06.2016, 10:19 2
Не нашел:
a) кода
б) версии питона
в) ос
г) вопроса
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
08.06.2016, 13:06  [ТС] 3
Вот клиент
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import smtplib
from email.mime.text import MIMEText
from Tkinter import *
import sqlite3
import tkMessageBox
import hashlib
import locale
 
 
con = sqlite3.connect('DataBaseMailServer')
cur = con.cursor()
cur.execute('create table if not exists TableForMailServer(Login TEXT, PASSWORD TEXT)')
con.commit()
 
 
def Entry1(event):
    def CheckLoginPassword():
        flag = 1
        con = sqlite3.connect('DataBaseMailServer')
        cur = con.cursor()
        cur.execute('SELECT * FROM TableForMailServer')
        data = cur.fetchall()
        con.commit()
        h1 = hashlib.md5(Password_entry.get())
        CryptPassword = h1.hexdigest()
        for i in range(len(data)) :
            if data[i][0] == LOGIN_entry.get() :
                if data[i][1] == CryptPassword :
                    SendMail(LOGIN_entry.get())
                    flag = 0
        if flag:
            tkMessageBox.showinfo(title="Error", message="Wrong login-password")
    root.destroy()
    rootEntry = Tk()
    rootEntry.title("Entry")
    app = Frame(rootEntry)
    app.pack()
    LOGIN_label = Label(app, text="Login")
    LOGIN_label.grid(row=0, column=0)
    LOGIN_entry = Entry(app, width=20)
    LOGIN_entry.grid(row=0,column=1)
    Password_label = Label(app, text="Password")
    Password_label.grid(row=1, column=0)
    Password_entry = Entry(app, width=20,show = '*')
    Password_entry.grid(row=1,column=1)
    entry_button = Button(app, text="Entry",width=10, command=CheckLoginPassword)
    entry_button.grid(row=3,column=0)
    exit_button = Button(app, text="Exit",width=10, command=rootEntry.destroy )
    exit_button.grid(row=3,column=1)
    x=(rootEntry.winfo_screenwidth()-rootEntry.winfo_reqwidth())/2
    y=(rootEntry.winfo_screenheight()-rootEntry.winfo_reqheight())/2
    rootEntry.wm_geometry("+%d+%d"%(x,y))
    rootEntry.mainloop()
    rootEntry.destroy()
 
 
def Registration(event):
    def database():
        con = sqlite3.connect('DataBaseMailServer')
        cur = con.cursor()
        h1 = hashlib.md5(Password_entry.get())
        CryptPassword = h1.hexdigest()
        cur.execute('INSERT INTO TableForMailServer VALUES(?,?)',(LOGIN_entry.get(),CryptPassword))
##        cur.execute('INSERT INTO TableForMailServer VALUES(?,?)',(LOGIN_entry.get(),Password_entry.get()))
        con.commit()
##    def quit(event):
 ##       root.destroy()
    root.destroy()
    rootEntry = Tk()
    rootEntry.title("Registration")
    app = Frame(rootEntry)
    app.pack()
    LOGIN_label = Label(app, text="Login")
    LOGIN_label.grid(row=0, column=0)
    LOGIN_entry = Entry(app, width=20)
    LOGIN_entry.grid(row=0,column=1)
    Password_label = Label(app, text="Password")
    Password_label.grid(row=1, column=0)
    Password_entry = Entry(app, width=20)
    Password_entry.grid(row=1,column=1)
    reg_button = Button(app, text="Save",width=10,command=database)
    reg_button.grid(row=3,column=0)
    exit_button = Button(app, text="Exit",width=10, command=rootEntry.destroy )
    exit_button.grid(row=3,column=1)
   ## rootEntry.bind('Escape',quit)
    x=(rootEntry.winfo_screenwidth()-rootEntry.winfo_reqwidth())/2
    y=(rootEntry.winfo_screenheight()-rootEntry.winfo_reqheight())/2
    rootEntry.wm_geometry("+%d+%d"%(x,y))
    
    rootEntry.mainloop()
 
 
def SendMail(FromField):
    def CheckLogin():
        def Send():
            ip_serv = IP_entry.get()
            FROM = FromField
            TO = TO_entry.get()
            Message = MSG_entry.get()   
            msg = MIMEText(Message)
            msg['To'] = TO
            msg['From'] = FROM
            server = smtplib.SMTP(ip_serv, 1025)
            server.set_debuglevel(True) # show communication with the server
            try:
                server.sendmail( FROM, TO, msg.as_string())
            finally:
                server.quit()
        flag = 1
        con = sqlite3.connect('DataBaseMailServer')
        cur = con.cursor()
        cur.execute('SELECT * FROM TableForMailServer')
        data = cur.fetchall()
        con.commit()
        for i in range(len(data)) :
            if data[i][0] == TO_entry.get() :
                Send()
                flag = 0
        if flag:
            tkMessageBox.showinfo(title="Error", message="Wrong reciver")
    root_mail = Tk()
    root_mail.title("Send Mail")
    app_mail = Frame(root_mail)
    app_mail.pack()
    TO_label = Label(app_mail, text="To")
    TO_label.grid(row=1, column=0)
    TO_entry = Entry(app_mail, width=20)
    TO_entry.grid(row=1,column=1)
    IP_label = Label(app_mail, text="IP")
    IP_label.grid(row=2, column=0)
    IP_entry = Entry(app_mail, width=20)
    IP_entry.grid(row=2,column=1)
    MSG_label = Label(app_mail, text="Message")
    MSG_label.grid(row=3, column=0)
    MSG_entry = Entry(app_mail, width=50)
    MSG_entry.grid(row=3,column=1)
    exit_button = Button(app_mail, text="Exit",width=10, command=root_mail.destroy )
    exit_button.grid(row=4,column=1)
    send_button = Button(app_mail, text="Send",width=10,command=CheckLogin )
    send_button.grid(row=4,column=0)
    x=(root_mail.winfo_screenwidth()-root_mail.winfo_reqwidth())/2
    y=(root_mail.winfo_screenheight()-root_mail.winfo_reqheight())/2
    root_mail.wm_geometry("+%d+%d"%(x,y))
    root_mail.mainl
    
root = Tk()
root.title("Client")
##btn1 = Button( root, text="Enter", width=30, height=5, bg="white", fg="black", command=Entry1)
##btn2 = Button( root, text="Registration", width=30, height=5, bg="white", fg="black", command=Registration)
##btn1.pack( side = TOP)
##btn2.pack( side = TOP)
btn1 = Button( root, text="Enter", width=30, height=5, bg="white", fg="black")
btn2 = Button( root, text="Registration", width=30, height=5, bg="white", fg="black")
btn1.bind("<Button-1>",Entry1)
btn2.bind("<Button-1>",Registration)
btn1.pack( side = TOP)
btn2.pack( side = TOP)
x=(root.winfo_screenwidth()-root.winfo_reqwidth())/2
y=(root.winfo_screenheight()-root.winfo_reqheight())/2
root.wm_geometry("+%d+%d"%(x,y))
root.mainloop()
Вот сервер
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from Tkinter import *
import smtpd
import asyncore
import os.path
import socket
 
 
def StartMenu():
    def ReturnIP():
        file = open("ip.txt","w+")
        file.write(IP_enter.get())
        file.close()
        root.destroy()
        return
    root = Tk()
    root.title("Enter IP")
    IP_label = Label(root,text ="IP")
    IP_label.grid()
    IP_enter = Entry (root, width=50)
    IP_enter.grid()
    Start = Button(root, text="Input",width=10, command=ReturnIP )
    Start.grid()
    root.mainloop()
 
 
def CreateFolder(mailfrom):
    if os.path.exists("Message\" + mailfrom):
        return
    else:
        os.makedirs("Message\" + mailfrom)
        return
 
def ParseAndGetMessage(mailfrom,data,rcpttos):
    with open("Message\" + mailfrom+"\"+ rcpttos[0] + ".txt","a",encoding='utf8') as file:
        file.write("\n"+ data[99 + len(rcpttos[0]) + 1 + 6 + len(mailfrom) + 2:])
        file.close()
    return
 
class MySMTPServer(smtpd.SMTPServer):
    def process_message(self,peer,mailfrom,rcpttos,data):
        CreateFolder(mailfrom)
        ParseAndGetMessage(mailfrom,data,rcpttos)
         
        
    ##peer - IP sender
    ##mailfrom - from
    ##rcpttos - to
    ##data - message
 
def GetIP():
    file = open('ip.txt','r')
    ip_serv = file.read()
    return ip_serv
 
StartMenu()
server = MySMTPServer((GetIP(),1025), None)
asyncore.loop()
0
Заблокирован
08.06.2016, 13:20 4
перекодируте строку в байты отправьте и будет вам счастье
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
15.06.2016, 00:02  [ТС] 5
askurandrio, вы можете подсказать как это сделать? И сделать надо это в сервере или клиенте?
0
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
15.06.2016, 00:23 6
Python
1
'привет'.encode('utf8')
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
15.06.2016, 09:16  [ТС] 7
Что то не получается, я знаю что ошибка в клиенте, но не знаю где именно
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
18.06.2016, 11:55  [ТС] 8
Я понял как это исправить в клиенте модуль mimetext, я указал дополнительные параметры, но приходит в кодировке base64
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2016, 11:55
Помогаю со студенческими работами здесь

OJB + Firebird проблема с русским языком
Ломается кодировка при занесении русских букв. при создании БД указана кодировка win1251 так что...

Проблема с русским языком в ListBox и ComboBox
В Windows XP в VB6 приложении русский язык нормально отображается в Label и TextBox, а в ListBox и...

проблема с русским языком в таблицах Access базы.
руководствуясь статьей 'Генерация отчета формата MS Excel средствами ASP' получила отчет, вот...

Поиск записей по таблице SQL (проблема с русским языком)
SQL запрос поиска определенной фразы/переменной выглядит вот так: SELECT * FROM TableWithLastNames...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru