Python - print/save 使用 smtplib 发送前的邮件
Python - print/save the email before sending using smtplib
我的 objective 是保存我的脚本使用 smtplib 模块发送的电子邮件。
这是我发送电子邮件的方式:
#Creating a multipart body
msg = MIMEMultipart()
#Attaching files to the email
for file in tc['attachments']:
try:
part = email.mime.base.MIMEBase('application', "octet-stream")
part.set_payload( open(file, "rb").read())
email.encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(part)
except Exception as err:
print "Exception when attaching file %s to the email: \n %s" % (file, err)
print traceback.print_exc()
#Connecting to the SMTP server
smtp = smtplib.SMTP("1.2.3.4")
#Sending the email
try:
status = smtp.sendmail(msg['From'], send_to, msg.as_string())
print status
smtp.close()
except Exception, e:
print "Unable to send the email. Exception seen: %s" % e
现在,如果我将 msg.as_string()
保存到一个变量,它只会保存电子邮件的 body,但我想要发送的整个电子邮件。
我查看了 smtplib
模块的文档,但找不到用于打印电子邮件 headers 的按钮。
是否有任何 hack(比如使用另一个模块来监控流量等)我可以用来按照我从脚本发送的方式保存电子邮件?
您可以使用 str()
:
获取包括 headers 在内的整个电子邮件的字符串版本
save_msg = str(msg)
我的 objective 是保存我的脚本使用 smtplib 模块发送的电子邮件。
这是我发送电子邮件的方式:
#Creating a multipart body
msg = MIMEMultipart()
#Attaching files to the email
for file in tc['attachments']:
try:
part = email.mime.base.MIMEBase('application', "octet-stream")
part.set_payload( open(file, "rb").read())
email.encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(part)
except Exception as err:
print "Exception when attaching file %s to the email: \n %s" % (file, err)
print traceback.print_exc()
#Connecting to the SMTP server
smtp = smtplib.SMTP("1.2.3.4")
#Sending the email
try:
status = smtp.sendmail(msg['From'], send_to, msg.as_string())
print status
smtp.close()
except Exception, e:
print "Unable to send the email. Exception seen: %s" % e
现在,如果我将 msg.as_string()
保存到一个变量,它只会保存电子邮件的 body,但我想要发送的整个电子邮件。
我查看了 smtplib
模块的文档,但找不到用于打印电子邮件 headers 的按钮。
是否有任何 hack(比如使用另一个模块来监控流量等)我可以用来按照我从脚本发送的方式保存电子邮件?
您可以使用 str()
:
save_msg = str(msg)