1、首先需要开启一下POP3/IMAP/SMTP服务。
登录邮箱网页版,点击左上方的设置,在“帐户”选项卡中选中POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,选中POP3/SMTP服务开启,然后点击获取授权码
2、代码呈上(发送普通文本、文本文件、图片)
# smtp邮件发送
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#第三方SMTP服务基础设置
mail_host = "smtp.qq.com"#设置主机
mail_user = "1790xxxxx@qq.com"#发送方账号名
mail_pass = "segytsghdhdhd"#授权码,而非我们设置的登录密码
sender = "1790xxxx@qq.com"#发送方
receivers = ["1790xxxxx@qq.com","7700xxxxx@qq.com"]#接收方成员列表
#设置信息头
message = MIMEMultipart()#由于我发送的数据中是混合类型数据,所以这里需要设置为混合数据类型
message["From"] = Header("Greatwhite","utf-8")#第一个参数为发件人昵称
message["To"] = Header("测试","utf-8")#第一个参数为收件人昵称
subject = "python smtp 邮件测试"
message["Subject"] = Header(subject,"utf-8")#信件主题
#构造附件(普通文本)
mail_message = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""#这里我们发送一个连接过去,与发送普通文本无异
message.attach(MIMEText(mail_message,"html","utf-8"))#信件内容
#构造附件1(普通txt文本文件)
att1 = MIMEText(open("C:/Users/Administrator/Desktop/test.txt","rb").read(),"base64","utf-8")
att1["Content-Type"] = "application/octet-stream"
att1["Content-Disposition"] = 'attachment;filename="test_py.txt"'#filename可以自定义
message.attach(att1)
# 构造附件2(附件为JPG格式的图片)
att2 = MIMEText(open('C:/Users/Administrator/Desktop/1.jpg', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="1.jpg"'
message.attach(att2)
# 邮件的发送五步骤
try:
smtpObj = smtplib.SMTP()#1、生成smtp协议对象
smtpObj.connect(mail_host,25)#2、获取连接
smtpObj.login(mail_user,mail_pass)#3、登录
smtpObj.sendmail(sender,receivers,message.as_string())#4、邮件发送
print("邮件发送成功")
smtpObj.quit()#5、关闭发送链接
except smtplib.SMTPException:
print("邮件发送失败")
最后查看你的邮箱,注意文本内容或者主题包含有test关键字时,邮箱可能会默认是垃圾邮件,直接存到垃圾箱中
3、属性解释:
Content-Type:定义传输文本类型。该属性有众多属性值,"application/octet-stream"属性值意思是二进制文件流形式,该形式是在未知文件类型,或者有多种类型时使用,关于其他属性,可看本文:https://blog.csdn.net/asd54090/article/details/80920564
Content-Disposition:定义文本在客户端下载属性。具体可看本文:https://blog.csdn.net/qq_29347295/article/details/53066857
open("C:/Users/Administrator/Desktop/test.txt","rb"):
选择相应的的文件路径,复制路径时注意用“/”,而非操作系统的默认“\”
一般常用模式:r(只读)、w(只写)、a(追加)、b(二进制)
组合:r+(读写)、w+(读写)
温馨提示:我们在写smtp时经常会写出stmp,要注意点