python SMTP实现发送带附件电子邮件

yipeiwu_com6年前Python基础

本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下

可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:

1. 构造MIMEMultipart对象做为根容器
2. 构造MIMEText对象做为邮件显示内容并附加到根容器
3. 构造MIMEBase对象做为文件附件内容并附加到根容器
  a. 读入文件内容并格式化
  b. 设置附件头
4. 设置根容器属性
5. 得到格式化后的完整文本
6. 用smtp发送邮件

具体内容参见<programing python(3rd)> 14章第6节 “email: Parsing and Composing Mails”。发送一个未知MIME类型的文件附件实例代码如下:

import smtplib
import email.MIMEMultipart
import email.MIMEText
import email.MIMEBase
import os.path
 
From = "sender address"
To = "recipients"
file_name = "file name"
 
server = smtplib.SMTP("smtp server address")
server.login("username","password") #仅smtp服务器需要验证时
 
# 构造MIMEMultipart对象做为根容器
main_msg = email.MIMEMultipart.MIMEMultipart()
 
# 构造MIMEText对象做为邮件显示内容并附加到根容器
text_msg = email.MIMEText.MIMEText("this is a test text to text mime")
main_msg.attach(text_msg)
 
# 构造MIMEBase对象做为文件附件内容并附加到根容器
contype = 'application/octet-stream'
maintype, subtype = contype.split('/', 1)
 
## 读入文件内容并格式化
data = open(file_name, 'rb')
file_msg = email.MIMEBase.MIMEBase(maintype, subtype)
file_msg.set_payload(data.read( ))
data.close( )
email.Encoders.encode_base64(file_msg)
 
## 设置附件头
basename = os.path.basename(file_name)
file_msg.add_header('Content-Disposition',
 'attachment', filename = basename)
main_msg.attach(file_msg)
 
# 设置根容器属性
main_msg['From'] = From
main_msg['To'] = To
main_msg['Subject'] = "attach test "
main_msg['Date'] = email.Utils.formatdate( )
 
# 得到格式化后的完整文本
fullText = main_msg.as_string( )
 
# 用smtp发送邮件
try:
 server.sendmail(From, To, fullText)
finally:
 server.quit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python3通过Luhn算法快速验证信用卡卡号的方法

本文实例讲述了Python3通过Luhn算法快速验证信用卡卡号的方法。分享给大家供大家参考。具体分析如下: Python3通过Luhn算法快速验证信用卡卡号,python用起来就是爽,很...

利用Python获取赶集网招聘信息前篇

如何获取一个网站的相关信息,获取赶集网的招聘信息,本文为大家介绍利用python获取赶集网招聘信息的关键代码,供大家参考,具体内容如下 import re import urllib...

python3.6利用pyinstall打包py为exe的操作实例

一、电脑需安装32位的python3.6(注意是32位的python而不是操作系统是32位,安装64的python会发现pyinstall无法提供服务) 二、安装python之后安装py...

Python设计模式之适配器模式原理与用法详解

Python设计模式之适配器模式原理与用法详解

本文实例讲述了Python设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口....

python中的set实现不重复的排序原理

python中的set实现不重复的排序原理

最近在尝试写选课系统的时候遇到一个问题:   1、存在两个类 School、Teacher ;   2、School实例中包含多个Teacher的实例,但又不可重复   本人想到在Sch...