利用python进行邮件的发送,这个功能自我感觉主要应用于检测或者报告之类,我两次运用这个功能。
第一次用在主要发送实时的数据给一个邮箱
第二次用是检测挂在服务器端一直在跑的python程序是否出现异常情况。
我这里采用163邮箱(sender)给qq邮箱(receiver)发送文本类邮件
如何在服务器端托管执行python3工程请看我另一篇文章:
【TOOLS】在云服务器上托管执行自己的python3工程程序
首先登陆163邮箱的网页版本。
show you my code
- 1from smtplib import SMTP
- 2from email.mime.text import MIMEText
- 3from email.header import Header
- 4 """
- 5 function: 利用模型进行推理
- 6 Parameters:
- 7 SMTP_host: string类型,SMTP 服务器主机ip地址。 这里为 "smtp.163.com"
- 8 from_addr: string类型,发送方,也就是作用为发送邮件的邮箱地址
- 9 password: string类型,邮箱的授权码,而不是邮箱的登陆密码,可从邮箱获得,就是上面二所讲获取的授权码。
- 10 to_addrs: list里面嵌套string类型,接收邮件的邮箱地址,可以有多个接收邮件的邮箱地址。
- 11 subject: string类型,主题
- 12 content: string类型,内容
- 13 Returns:
- 14 CSDN:
- 15 http://chehongshu.blog.csdn.net
- 16 """
- 17def send_email(SMTP_host, from_addr, password, to_addrs, subject, content):
- 18
- 19 email_client = SMTP(SMTP_host) #初始化 SMTP类,SMTP服务使用的端口号默认为25,这里默认情况,也可自己设置port参数
- 20 email_client.login(from_addr, password) #登陆服务器
- 21
- 22 # 以下在下面的结果图片中再具体标出说明
- 23 msg = MIMEText(content, 'plain', 'utf-8') #可以理解为发送这个邮箱内容的类,这句话主要是设置这个邮件内容
- 24 msg['Subject'] = Header(subject, 'utf-8') # 设置邮箱主题,也就是标题
- 25 msg['From'] = from_addr # 这个是最后显示的邮件的from
- 26 msg['To'] = "".join(to_addrs) # 这个是最后显示的邮件的to
- 27 email_client.sendmail(from_addr, to_addrs, msg.as_string()) #发送信息,将msg转换为string
- 28
- 29 email_client.quit()# 退出服务器
- 30
- 31if __name__ == "__main__":
- 32
- 33 hoster = "smtp.163.com"
- 34 sender_email = "XXXXXXXXX@163.com"
- 35 Authorization_code= "XXXXXXXXXXX"
- 36 receiver_email = ["XXXXXXXX@qq.com"]# 这里如果需要发送多个邮箱,形式为["xxxqq.com","xxx163.com","xxx126.com"]
- 37 subject = "我发送邮件了"
- 38 text = "今天天气真好"
- 39
- 40 send_email(hoster, sender_email, Authorization_code, receiver_email, subject, text)
可能出现这个问题
smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp12,
对于在阿里云服务器上运行本文章有几处需要改动的地方。阿里云服务器里面有很多端口都被限制,所以以下的代码在本地可以成功,但在云服务器上并出现问题成功的为port=587我发送的邮件改为qq邮箱,接受为网易163邮箱,服务器host也改为"smtp.qq.com"
获取qq邮箱授权码
有改动,请自己对照使用,亲测好用
- 1from smtplib import SMTP
- 2from email.mime.text import MIMEText
- 3from email.header import Header
- 4
- 5def send_email(SMTP_host, from_addr, password, to_addrs, subject, content):
- 6 """
- 7 port = 587
- 8 在登陆邮箱前加上email_client.starttls()这句话
- 9 """
- 10 email_client = SMTP(SMTP_host, 587)
- 11 email_client.starttls()
- 12 email_client.login(from_addr, password)
- 13
- 14 msg = MIMEText(content, 'plain', 'utf-8')
- 15 msg['Subject'] = Header(subject, 'utf-8')#subject
- 16 msg['From'] = from_addr
- 17 msg['to'] = ''.join(to_addrs)
- 18 email_client.sendmail(from_addr, to_addrs, msg.as_string())
- 19
- 20 email_client.quit()
- 21
- 22if __name__ == "__main__":
- 23 """
- 24 sender和receiver对调
- 25 """
- 26 receiver = ["xxx@163.com"]
- 27 send_email("smtp.qq.com","xxx@qq.com","shouquanma",receiver ,"程序出问题了","ps")
结果
联系客服