python 发送带有文本和附件的电子邮件
python sending email with text and attachment
我写了一个脚本来备份我的 Neo4J 数据库。
备份过程结束时,电子邮件会发送给数据库管理员
收到的电子邮件没有message_body
。
这是代码:
message = MIMEMultipart('alternative')
message['To'] = "Database Admin <%s>" % _receiver
message['From'] = "Pico.buzz Graph Database <%s>" % _sender
if not log.is_error():
message['Subject'] = "Graph DB Backup Finished Successfully"
message_body = 'Successfully backup email. Please see review log file'
else:
message['Subject'] = "ATTENTION: ERROR! Graph DB Backup Failed"
message_body = 'An error occur during backup. please review log'
instance_name = aws.get_instance_name()
instance_details = "Instance Id: %s\nPrivate IP Address: %s" % (aws.get_instance_id(), aws.get_instance_ip())
if instance_name is not None:
instance_details = """Instance Name: %s\n%s""" % (instance_name, instance_details)
message_body = "%s\n\n%s" % (message_body, instance_details)
content = MIMEText(message_body, 'plain')
message.attach(content)
message.attach(_get_log_file())
smtp = smtplib.SMTP('localhost')
smtp.sendmail(_sender, _receiver, message.as_string())
log.info(__name__, "Successfully sent email to: %s" % _receiver)
知道为什么吗?
MIMEMultipart
将多部分子类型作为构造函数的参数。
您使用的是子类型 'alternative'
。替代子类型允许使用 HTML 和文本发送电子邮件。
您想提交一封包含文本和附件的电子邮件,因此您需要使用子类型 'mixed'
构造 MIMEMultipart
。
有关这些子类型的更多详细信息,您可以查看 Multipart messages 上的 MIME 维基百科条目。
我写了一个脚本来备份我的 Neo4J 数据库。
备份过程结束时,电子邮件会发送给数据库管理员
收到的电子邮件没有message_body
。
这是代码:
message = MIMEMultipart('alternative')
message['To'] = "Database Admin <%s>" % _receiver
message['From'] = "Pico.buzz Graph Database <%s>" % _sender
if not log.is_error():
message['Subject'] = "Graph DB Backup Finished Successfully"
message_body = 'Successfully backup email. Please see review log file'
else:
message['Subject'] = "ATTENTION: ERROR! Graph DB Backup Failed"
message_body = 'An error occur during backup. please review log'
instance_name = aws.get_instance_name()
instance_details = "Instance Id: %s\nPrivate IP Address: %s" % (aws.get_instance_id(), aws.get_instance_ip())
if instance_name is not None:
instance_details = """Instance Name: %s\n%s""" % (instance_name, instance_details)
message_body = "%s\n\n%s" % (message_body, instance_details)
content = MIMEText(message_body, 'plain')
message.attach(content)
message.attach(_get_log_file())
smtp = smtplib.SMTP('localhost')
smtp.sendmail(_sender, _receiver, message.as_string())
log.info(__name__, "Successfully sent email to: %s" % _receiver)
知道为什么吗?
MIMEMultipart
将多部分子类型作为构造函数的参数。
您使用的是子类型 'alternative'
。替代子类型允许使用 HTML 和文本发送电子邮件。
您想提交一封包含文本和附件的电子邮件,因此您需要使用子类型 'mixed'
构造 MIMEMultipart
。
有关这些子类型的更多详细信息,您可以查看 Multipart messages 上的 MIME 维基百科条目。