本帖最后由 sunyakai 于 2019-12-26 16:14 编辑
一:SMTP介绍 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件 二:发送邮件实列 在这里我们使用企业邮箱263发送邮件,由于找不到设置smtp服务的密码,然后向客服询问,263企业邮箱默认smtp服务是开启的,密码就是对应发送邮箱账号的密码; [Python] 纯文本查看 复制代码 # 发信服务器
smtp_server = 'smtp.263.net'
# 服务器端口--加密
port = 465 纯文本邮件: [Python] 纯文本查看 复制代码 import smtplib # smtp服务器
from email.mime.text import MIMEText # 邮件文本
# 邮件构建
sender = "*******@itcast.cn" # 发送方
password = "*****" # smtp服务密码
subject = "滴滴答答" # 邮件标题
content = "新年快乐!" # 文本内容
recver = "*******@itcast.cn" # 接收方
# content 发送内容 "plain"文本格式 utf-8 编码格式
message = MIMEText(content, "plain", "utf-8")
message['Subject'] = subject # 邮件标题
message['To'] = recver # 收件人
message['From'] = sender # 发件人
smtp = smtplib.SMTP_SSL("smtp.263.com", 465) # 实例化smtp服务器
smtp.login(sender, password) # 发件人登录
smtp.sendmail(sender, [recver], message.as_string()) # as_string 对 message 的消息进行了封装
smtp.close() 发送带附件的邮件: [Python] 纯文本查看 复制代码 import smtplib # smtplib 用于邮件的发信动作
from email.mime.text import MIMEText # email 用于构建邮件内容
from email.header import Header # Header 用来构建邮件头
from email.mime.multipart import MIMEMultipart # 用于实例化附件(处理多种形态的邮件主体我们需要 MIMEMultipart 类)
# 邮件构建
sender = "*******@itcast.cn" # 发送方
password = "*****" # smtp服务密码
subject = "滴滴答答" # 邮件标题
content = "新年快乐!" # 文本内容
recver = "*******@itcast.cn" # 接收方
# content 发送内容 "plain"文本格式 utf-8 编码格式
message = MIMEText(content, "plain", "utf-8")
message['Subject'] = subject # 邮件标题
message['To'] = recver # 收件人
message['From'] = sender # 发件人
# 构造文件附件1
attr1 = MIMEText(open(files, 'rb').read(), 'base64', 'utf-8')
attr1["content_Type"] = 'application/octet-stream'
# attr1["Content-Disposition"] = "attachment; filename=Header({}, 'utf-8').encode()".format('你好') # 表示这是附件,名字是啥
# 解决附件中文名称乱码问题
attr1.add_header('Content-Disposition', 'attachment', filename=Header(file_name, 'utf-8').encode())
message.attach(attr1)
# 构造图片附件2
att2 = MIMEText(open('./1.png', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="12.jpg"'
message.attach(att2)
# 构造html附件3
att3 = MIMEText(open('./2.html', 'rb').read(), 'base64', 'utf-8')
att3["Content-Type"] = 'application/octet-stream'
att3["Content-Disposition"] = 'attachment; filename="boke.html"'
message.attach(att3)
smtp = smtplib.SMTP_SSL("smtp.263.com", 465) # 实例化smtp服务器
smtp.login(sender, password) # 发件人登录
smtp.sendmail(sender, [recver], message.as_string()) # as_string 对 message 的消息进行了封装
smtp.close() 注意点:使用smtp服务发送带附件的邮件,附件的名称不能直接用中文,否则发送过去文件名会是乱码 [Python] 纯文本查看 复制代码 # 解决附件中文名称乱码问题
attr1.add_header('Content-Disposition', 'attachment', filename=Header(file_name, 'utf-8').encode()) 使用263企业邮箱进行邮件发送就完成了,抓紧去用自己的账号去试试了 |