Python - 使用smtplib发送阿拉伯语电子邮件

时间:2016-08-31 08:22:56

标签: python email smtplib

我尝试使用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)

关于如何修复它的任何想法?

2 个答案:

答案 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())`