私は簡単なsmtp送信者と認証を書いています。ここに私のコードですPython 2.7でsmtplibを使用して電子メールに文字セットを設定する方法は?
SMTPserver, sender, destination = 'smtp.googlemail.com', '[email protected]', ['[email protected]']
USERNAME, PASSWORD = "user", "password"
# typical values for text_subtype are plain, html, xml
text_subtype = 'plain'
content="""
Hello, world!
"""
subject="Message Subject"
from smtplib import SMTP_SSL as SMTP # this invokes the secure SMTP protocol (port 465, uses SSL)
# from smtplib import SMTP # use this for standard SMTP protocol (port 25, no encryption)
from email.MIMEText import MIMEText
try:
msg = MIMEText(content, text_subtype)
msg['Subject']= subject
msg['From'] = sender # some SMTP servers will do this automatically, not all
conn = SMTP(SMTPserver)
conn.set_debuglevel(False)
conn.login(USERNAME, PASSWORD)
try:
conn.sendmail(sender, destination, msg.as_string())
finally:
conn.close()
except Exception, exc:
sys.exit("mail failed; %s" % str(exc)) # give a error message
私は非アスキーシンボル(ロシア語キリル文字)を送信しようとするまで、完璧に動作します。メッセージに文字セットを定義して適切な方法で表示するにはどうすればよいですか?前もって感謝します!
UPD。 、だから私はtext_subtype = 'テキスト' とspectify、その後、ヘッダに、私はMSG [ 'Content-Typeの'] =「text/htmlのを置く初めて
text_subtype = 'text'
content="<p>Текст письма</p>"
msg = MIMEText(content, text_subtype)
msg['From']=sender # some SMTP servers will do this automatically, not all
msg['MIME-Version']="1.0"
msg['Subject']="=?UTF-8?Q?Тема письма?="
msg['Content-Type'] = "text/html; charset=utf-8"
msg['Content-Transfer-Encoding'] = "quoted-printable"
…
conn.sendmail(sender, destination, str(msg))
;のcharset = UTF:私は自分のコードを変更しました-8 "文字列。それが正しいか?最後に、私はあなたがMSG =ます:MIMEText(content.encode( 'UTF-8')、 'プレーン'、 'UTF-8')
こんにちはロルカン! msg( 'From' '=' [email protected] 'のように)を私のmsgに指定する場合は、' To 'と' From 'はどうですか?私もそれをエンコードする必要がありますか? –