python自动发送邮件

python自动发送邮件

学习完本篇,你将会

  • 了解邮件协议
  • 编写一个邮件系统

了解邮件SMTP协议

  • SMTP:即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
  • 发送邮件一般有两种形式,一种是通过邮箱web,另一种是下载邮箱客户端,配置邮箱账号密码,邮箱服务器,就可以发送,python类似第二种方式。
  • SMTP协议比较复杂,使用过程中,只需要知道一下几点:
    1.host:指定连接的邮箱服务器
    2.port:指定连接服务器的端口号
    3.user:登陆邮箱用户名
    4.password:登陆邮箱密码
    5.from_addr:邮箱发送者地址
    6.to_addrs:字符串列表,邮件发送地址
    7.msg:发送消息

简单发送HTML格式邮件

实例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header

#发送邮件服务器
smtpserver = ‘’ smtp.163.com”
#发送用户名密码:
user = ‘username@163.com’
password = ‘123456’
#发送邮箱
sender = ‘username@163.com’
#接受邮箱
receiver =  ‘receive@qq.com’

subject = “python email test” 

#发送主体
msg = MIMEText('<html><h1>你好!</h1></html>','html','utf-8')
msg["Subject"] = Header(subject,'utf-8')

#邮箱发送者地址以及收件人地址
msg['From'] = sender
msg['To'] = receiver
#连接邮件
smtp = smtplib.SMTP()
smtp.connect(smtpsever)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()

例子中除用到smtplib模块外,还用到email模块,通过email模块来定义邮件的标题和正文,Header()函数用来定义邮件标题,MIMEText()用于定义邮件正文,参数html格式的文本。

带附件发送HTML格式邮件

实例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header

#发送邮件服务器
smtpserver = ‘’ smtp.163.com”
#发送用户名密码:
user = ‘username@163.com’
password = ‘123456’
#发送邮箱
sender = ‘username@163.com’
#接受邮箱
receiver =  ‘receive@qq.com’
#主题
subject = “python email test” 
#附件内容
sendfile = open(‘D:\\report\\log.txt’,’rb’).read()
#发送附件
att = MIMEText(sendfile,’base64’,’utf-8’)
att[“Content-Type”] =  ‘application/octet-stream’
msgRoot=MIMEMultipart(‘related’)
msgRoot['From'] = sender
msgRoot['To'] = receiver
msgRoot['Subject'] = Header(subject,'utf-8')
msgRoot.attach(msg)
#连接邮件
smtp = smtplib.SMTP()
smtp.connect(smtpsever)
smtp.login(user,password)
smtp.sendmail(sender,receiver, msgRoot.as_string())
smtp.quit()

左侧通过读文件内容,把文件内容添加MIMEText参数中,修改文件形式,从而更改方邮件功能

其它的内容发送可参考:
http://www.jb51.net/article/49216.htm

posted @ 2021-09-20 23:57  IT策士  阅读(174)  评论(0编辑  收藏  举报