使用函数通过python发送Gmail
下面是两个代码块。第一个将向gmail发送带有正确主题和发件人的消息。但是,当我将第一个代码放入函数时,电子邮件会丢失发件人和主题信息 这是为什么?我该如何修复它 我希望能够从其他python脚本调用此函数,以便在我的工作完成时通知我。该功能可以正常工作并运行,邮件会发送到我的收件箱,但我会丢失发件人信息,更重要的是,主题标题 第一个按预期运行的代码:使用函数通过python发送Gmail,python,gmail,smtplib,Python,Gmail,Smtplib,下面是两个代码块。第一个将向gmail发送带有正确主题和发件人的消息。但是,当我将第一个代码放入函数时,电子邮件会丢失发件人和主题信息 这是为什么?我该如何修复它 我希望能够从其他python脚本调用此函数,以便在我的工作完成时通知我。该功能可以正常工作并运行,邮件会发送到我的收件箱,但我会丢失发件人信息,更重要的是,主题标题 第一个按预期运行的代码: import smtplib gmail_user = 'name@domain.com' gmail_password = 'passw
import smtplib
gmail_user = 'name@domain.com'
gmail_password = 'password'
sent_from = gmail_user
to = ['recipient@domain.com']
subject = "job complete"
body = "python script " + str(name) + " has finished"
email_text = """\
From: %s
To: %s
Subject: %s
%s
""" % (sent_from, ", ".join(to), subject, body)
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, email_text)
server.close()
丢失主题和发件人信息的第二个代码:
def mailer(subject, body):
import smtplib
gmail_user = 'name@domain.com'
gmail_password = 'password'
sent_from = gmail_user
to = ['recipient@domain.com']
subject = subject
body = body
email_text = """\
From: %s
To: %s
Subject: %s
%s
""" % (sent_from, ", ".join(to), subject, body)
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, email_text)
server.close()
subject = "job complete"
body = "python script " + str(name) + " has finished"
mailer(subject, body)
这很可能是一个行尾问题。每个邮件头都必须以CRLF结尾\r\n。原始消息字符串可能包含编辑器中不可见的正确结尾,这些结尾随后在复制/粘贴到函数版本时丢失。为确保每一行的结尾正确,请尝试将每一行表示为单独的字符串,并用\r\n连接它们
在你的第二个代码中,你为什么要这样做:主题=主题,身体=身体?这应该是多余的
email_text = '\r\n'.join([
'From: %s' % sent_from,
'To: %s' % ', '.join(to),
'Subject: %s' % subject',
'', # Blank line to signal end of headers
body
])