错误“电子邮件没有属性编码”在 python 中发送电子邮件

Posted

技术标签:

【中文标题】错误“电子邮件没有属性编码”在 python 中发送电子邮件【英文标题】:Error "email has no attribute encode" sending email in python 【发布时间】:2020-11-09 20:42:19 【问题描述】:

我正在尝试在 python 中使用MIME 发送电子邮件。以下是我正在使用的代码:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

try:
    raw_data = request.get_json()
    pwd_email_id = raw_data['email']
    log.error("Sending email to ".format(pwd_email_id))
    recipients = pwd_email_id

    msg = MIMEMultipart()

    msg['Subject'] = 'App Registered'
    msg['From'] = 'xyz@gmail.com'
    msg['To'] = email

    message_text = "Dear " + pwd_email_id + "\r\n\r\nYour app has been registered successfully.\r\nBelow are the " \
                   "details:\r\n\r\n\r\n1.App Name: " + "app_name" + "\r\n2.App Key: " + "app_key" + "\r\n3.Registered Date: " + "registered_date" + "\r\n4.Expiry Date: " + "expiry_date" + "\r\n\r\n\r\nUse app name and app key as headers to make calls to  services. " \
                                                                                                                                                                                             "Do not share your app key with anyone.\r\nLet us know if you face any issues.\r\n\r\nThanks "
    text = MIMEText(message_text)
    msg.attach(text)

    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login('xyz@gmail.com', '<password>')
    s.sendmail("xyz@gmail.com", recipients, msg.as_string())
    s.quit()
except Exception as e:
    log.error("Exception in sending  email ".format(e))

但它给了我以下错误:

module email has no attribute encode

在线:

s.sendmail("xyz@gmail.com", recipients, msg.as_bytes())

我无法理解为什么它会给出这个错误。我试过只使用msg 而不是msg.as_bytes(),但它仍然是一样的。谁能指出代码中的问题。谢谢

【问题讨论】:

【参考方案1】:

对我来说似乎是一个错字。

您在调用msg['To'] = email 时分配了模块email。该模块必须是在共享代码之外导入的(检查你的导入,它可能就在那里!)。 msg.as_string() 只是无法解析模块对象(因为模块没有 encode 属性)。

【讨论】:

以上是关于错误“电子邮件没有属性编码”在 python 中发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

在python中发送电子邮件(MIMEmultipart)

如何在python程序中发邮件

Python list 可以在迭代期间发生变异,但不能在 deque 中发生变异。为啥?

插入查询中发生语法错误(MS Access)

Angular 8 ng build --prod 在 TypeError 中发出错误:无法读取未定义的属性“标志”

无法在Codeigniter中发送电子邮件,没有错误消息。本地或远程