我正在尝试从我的Raspberry Pi发送一封包含Python附件的电子邮件。
以下代码(email.py)在我使用sudo python3 email.py
但不通过sudo python email.py
时有效。
######WRITE EMAIL AND SEND
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import locale
locale.setlocale(locale.LC_TIME, "de_DE")
attachment = 0
fromaddr = 'MAIL@gmail.com'
toaddr = ['MAIL@gmail.com']
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = ", ".join(toaddr)
msg['Subject'] = 'ÄÖÜäöü'
body = 'Ääüäöü'
msg.attach(MIMEText(body, 'plain',_charset='latin-1'))
filename = 'Picture'
for file in os.listdir('/path/to/Pictures/'):
if file.__contains__('.png'):
a_file=file
attachment = open('/path/to/pi/Pictures/'+a_file, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename= %s' % filename)
msg.attach(part)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, 'Password')
text = msg.as_string()
print ('# Sending mail')
server.sendmail(fromaddr, toaddr, text)
server.quit()
print('# Mail Sent')
使用python方法时遇到的错误是:
SyntaxError: Non ASCII character \xc3 in file email.py on line XX but no encoding declared; see htttp://python.org/dev/peps/pep-0263/ for details.
元音ÄÖÜ...
导致问题。
我知道不同的python版本使用不同的编码作为默认值,而python3使用utf-8。
以某种方式python email.py
使用了另一种编码,我不知道如何更改它。
我想知道我必须在代码中添加特定的编码指令,以便代码可以在两个python版本上运行。
答案 0 :(得分:1)
Python2使用ASCII作为默认编码。但是,您可以定义要使用的编码。
在脚本中添加以下行,以提示您的python使用utf-8编码。
#coding=utf-8
在python3的情况下你没有收到任何错误,因为它使用utf-8作为默认编码。