python 如何在 smtplib 中发送 UNICODE 消息

How to send UNICODE message in smtplib in python

是否可以将邮件转换为 unicode?因为它给出了错误

_fix_eols(msg).encode('ascii') UnicodeEncodeError: 'ascii' codec can't encode characters in position 105-107: ordinal not in range(128)

fromaddrs = tkinter.StringVar()
password = tkinter.StringVar()
toaddrs = tkinter.StringVar()
subject = tkinter.StringVar()
message = tkinter.StringVar()

entry_from_address = ttk.Entry(window, textvariable=fromaddrs)
entry_from_password = ttk.Entry(window, textvariable=password)
entry_to_address = ttk.Entry(window, textvariable=toaddrs)
entry_subject = ttk.Entry(window, textvariable=subject)
entry_message = ttk.Entry(window, textvariable=message)



def email_send(*args):
    mail_details= """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (fromaddrs.get(), ", ".join(toaddrs.get()), subject.get(), message.get())
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddrs.get(), password.get())
    server.sendmail(fromaddrs.get(), toaddrs.get(), mail_details)
    server.quit()
    print("message send")

作为解决方法尝试

server.sendmail(fromaddrs.get(), toaddrs.get(), mail_details.encode("utf-8"))

参见 https://bugs.python.org/issue25736