我尝试使用smtplib发送包含阿拉伯语和波斯语字符的电子邮件。以下是我的功能:
def send_email (admin, pwd, user, message):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(admin, pwd)
server.sendmail(admin, user, message)
server.close()
return True
send_email('sender@example.com', 'example', 'reciever@example.com', 'کاراکتر فارسی و عربی Persian and Arabic Characters')
并且,我收到以下错误:
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
关于如何修复它的任何想法?
答案 0 :(得分:2)
尝试.encode('UTF-8') 希望它能帮助
答案 1 :(得分:1)
以下代码可以解决您的问题:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
import email.mime.text
def send_email (admin, pwd, user, message):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(admin, pwd)
server.sendmail(admin, user, message)
server.close()
return True
msg = email.mime.text.MIMEText("پایتون", _charset="UTF-8")
print send_email('send@gmail.com', 'passwd', 'rec@gmail.com', msg.as_string())`