python实现邮件自动发送–代码
完整代码
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
#配置环境 连接服务器
server='smtp.qq.com' #smtp.qq.com smtp.126.com ......
smtp=smtplib.SMTP_SSL(server, 465)
#用户登录,此处授权瞎打的
smtp.login('2638273921@qq.com', 'gfhfgnbmnnhzdief')
#正文内容 即邮件显示内容
content="这是通过自动化脚本发送的邮件,带附件" #正文内容
msg=MIMEMultipart()
msg.attach(MIMEText(content,'plain','utf-8'))#(content,'plain'(格式 Html 等),'utf-8')
msg['From']='2638273921@qq.com'
msg['To']='2638273921@qq.com'
#msg['To']=','.join(receivers)#发送给多人时 ','.join(receivers) receivers为收件人列表
msg['Subject']=Header('自动发送','utf-8')#主题
#附件内容
send_file=open(r'D:\desktop\1.jpg', 'rb').read()#附件读取
att=MIMEText(send_file, 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment;filename="1.jpg"'
msg.attach(att)#把附件添加到邮件中
#发送
sender='2638273921@qq.com'
receiver='2638273921@qq.com'#多个的话写为列表形式
#receivers=['2638273921@qq.com','3110209176@qq.com']
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
print('发送成功')
实现效果
具体实现讲解
1. 用到的库
import smtplib #连接服务器
from email.mime.text import MIMEText #发送附件
from email.header import Header #发送主题
from email.mime.multipart import MIMEMultipart#发送正文
2. 配置环境,连接服务器
#配置环境 连接服务器
server='smtp.qq.com' #服务器地址 smtp.qq.com smtp.126.com ......
smtp=smtplib.SMTP_SSL(server, 465) #对应端口号
#用户登录
smtp.login('2638273921@qq.com', 'onhhdodmnnhzdief')
#邮件名及第三方登录授权码
- 上述代码以QQ邮箱为例,其余邮箱服务器地址和端口号可直接搜索’常用邮箱SMTP服务器地址大全’关键词即可查找
- 下面以QQ邮箱为例,介绍如何获取邮箱的第三方登录授权码
1). 登录邮箱,点击邮箱设置(设置)->账户
2). 下拉找到 POP3/SMTP服务 ,若未开启可点击开启依照简单步骤进行开启(注意保存授权码);若已开启但忘记授权码,可以点击关闭后再次进行开启,重新获得授权码
3.填写收发邮箱及主题、正文内容
#正文内容
content="这是通过自动化脚本发送的邮件,带附件"
msg=MIMEMultipart()
msg.attach(MIMEText(content,'plain','utf-8'))#(content,'plain'(格式 Html 等),'utf-8')
#邮件的标注内容
msg['From']='2638273921@qq.com'
msg['To']='2638273921@qq.com'
#msg['To']=','.join(receivers)#发送给多人时 ','.join(receivers) receivers为收件人列表
#主题
msg['Subject']=Header('自动发送','utf-8')
对应邮件的内容如下
4.添加附件
#附件内容
send_file=open(r'D:\desktop\1.jpg', 'rb').read()#附件读取
att=MIMEText(send_file, 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment;filename="1.jpg"'
#注意filename="1.jpg" 需要扩展名与附件类型一致,否则文件无法显示
msg.attach(att)#把附件添加到邮件中
5. 发送邮件
#发送
#发件人邮箱
sender='2638273921@qq.com'
#收件人邮箱,多个的话写为列表形式
receiver='2638273921@qq.com'
#receivers=['2638273921@qq.com','3110509175@qq.com']
#组装邮件
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
print('发送成功')