代码
#连接邮件服务器需要smtplib模块
import smtplib
#发送字符串的邮件
from email.mime.text import MIMEText
#处理多种形态的邮件主体我们需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart
#处理图片类型需要 MIMEImage 类
from email.mime.image import MIMEImage
#邮件不管什么类型的附件都是可以使用MIMEApplication类
from email.mime.application import MIMEApplication
line = "请查看附件"
def sendmail(smtp_host,smtp_port,subject,smtp_sender,smtp_receive,password):
#创建多主体的邮件 的实例化对象,可包含文本,附件
message = MIMEMultipart()
message['Subject'] = subject # 邮件主题显示
message['From'] = smtp_sender # 发件人显示,没有实际作用
message['To'] = smtp_receive # 收件人显示,没有实际作用
# 邮件主体之正文内容
# att = MIMEText(line, 'plain', 'utf-8')
# message.attach(att)
#此一行相当于上方两行
message.attach(MIMEText(line, 'plain', 'utf-8'))
#邮件主体之附件1
atttxt = MIMEApplication(open("testatt.txt",'r').read())
#filename为客户端接收到的附件的名字,可自定义
#Content-Disposition为属性名disposition-type是以什么方式下载,如attachment为以附件方式下载
#attachment为以附件方式下载,不直接显示内容,而是弹出一个"文件下载"的对话框,由客户端来决定"打开"还是"保存”
atttxt.add_header('Content-Disposition', 'attachment', filename="testatt.txt")
#把附件加入邮件
message.attach(atttxt)
#txt文档也可以用二进制读取发送
# atttxt = MIMEApplication(open("testatt.txt",'rb').read())
# filename为客户端接收到的附件的名字,可自定义
# atttxt.add_header('Content-Disposition', 'attachment', filename="testatt.txt")
# 把附件加入邮件
# message.attach(atttxt)
#邮件主体之附件2
attdoc = MIMEApplication(open("testatt.docx","rb").read())
attdoc.add_header('Content-Disposition', 'attachment', filename="testatt.docx")
message.attach(attdoc)
# 邮件主体之附件3
#发送图片方法1 图片为二进制,需要rb读取
# attimag = MIMEImage(open("testatt.jpg","rb").read())
# attimag.add_header('Content-Disposition', 'attachment', filename="testatt.jpg")
# message.attach(attimag)
#发送图片方法2 图片为二进制,需要rb读取
# image_data = open('testatt.jpg','rb') # 二进制读取图片
# attimag = MIMEImage(image_data.read()) # 设置读取获取的二进制数据
# image_data.close() # 关闭刚才打开的文件
# attimag.add_header('Content-Disposition', 'attachment', filename='testatt.jpg')
# message.attach(attimag)
#发送图片方法3 图片为二进制,需要rb读取,二进制文件发送,三种写法都可以,第三种使用MIMEApplication方法,最简洁
attimag = MIMEApplication(open("testatt.jpg","rb").read())
attimag.add_header('Content-Disposition', 'attachment', filename="testatt.jpg")
message.attach(attimag)
# 邮件主体之附件4
#二进制文件发送方法均相同
attzip = MIMEApplication(open("testatt.zip","rb").read())
attzip.add_header('Content-Disposition', 'attachment', filename="testatt.zip")
message.attach(attzip)
# 创建 SMTP 对象
smtp = smtplib.SMTP_SSL(smtp_host, smtp_port)
# 连接(connect)指定服务器
smtp.connect(smtp_host, smtp_port)
# 登录,需要:登录邮箱和授权码
smtp.login(smtp_sender, password)
smtp.sendmail(smtp_sender, smtp_receive, message.as_string())
print('发送成功')
smtp.quit()
if __name__ == '__main__':
smtp_host = "smtp.qq.com"
smtp_port = 465
subject = "qq_mail"
smtp_sender = "9******8@qq.com"
smtp_receive = "9******8@qq.com"
password = 'a******e'
sendmail(smtp_host,smtp_port,subject,smtp_sender,smtp_receive,password)
发送成功
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154041.html