我无法使用SMTLIB添加主题|蟒蛇

时间:2018-09-17 22:52:57

标签: python python-3.x smtplib

我的朋友和我一直在为电子邮件发件人编写代码,但是如果您可以提供帮助,我们将无法通过电子邮件发送主题。非常感谢:

import smtplib

def send_email(send_to, subject, message):
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)

    server.login("*******", "******")

    server.sendmail('******', send_to, message, subject)

    server.quit()

target = input('Who are you sending the email to? ')
subj = input('What is your subject? ')
body = input('Enter the message you want to send: ')

send_email(target, subj, body)

except SMTPException:
   print("Error: unable to send email")

1 个答案:

答案 0 :(得分:1)

smtplib.SMTP.sendmail()的调用没有使用subject参数。请参阅该文档以获取有关如何调用它的说明。

主题行和所有其他标头一起作为消息的一部分以称为RFC822格式的格式包含在消息中,该文件原先已定义了该格式,现在已经过时了。使您的消息符合该格式,如下所示:

import smtplib fromx = 'xxx@gmail.com' to = 'xxx@gmail.com' subject = 'subject' #Line that causes trouble msg = 'Subject:{}\n\nexample'.format(subject) server = smtplib.SMTP('smtp.gmail.com:587') server.starttls() server.ehlo() server.login('xxx@gmail.com', 'xxx') server.sendmail(fromx, to, msg) server.quit()

当然,使您的消息符合所有适当标准的更简单方法是使用Python email.message标准库,如下所示:

import smtplib from email.mime.text import MIMEText fromx = 'xxx@gmail.com' to = 'xxx@gmail.com' msg = MIMEText('example') msg['Subject'] = 'subject' msg['From'] = fromx msg['To'] = to server = smtplib.SMTP('smtp.gmail.com:587') server.starttls() server.ehlo() server.login('xxx@gmail.com', 'xxx') server.sendmail(fromx, to, msg.as_string()) server.quit()

其他示例也可用。