大家好,我是李慢慢。
研究用python发邮件,是因为工作中可能会用到。
工作中很多批量化测试任务开启后,我们可能就忙其他事了或者回家了,对于测试的结果,只有想起来后才会去看一眼。这样总觉得心里没谱,要么就是不知道现状如何,要么就是不知道结果如何了。所以想自制一个自动化提醒工具,即用python把测试的结果以邮件的方法发出来,这样自己就能在手机上收到提醒了。其实python也能实现发送手机短信或者微 信信息,如果工作电脑能连接网络,也是个很好的选择。不过短信类总是不能完美地呈现较大量信息,所以我觉得这里还是以邮件为通知方式比较靠谱。
网上资料挺多的,我这里也只是照着画瓢,稍作记录。
1、基本原理
python程序直接访问某个邮箱运营商的服务器,以某个注册用户的名义,向其他邮箱发送邮件。
2、python库
主要是两个库:smtplib库和email库。其中smtplib库负责收发邮件的动作。email库负责创建邮件的内容,比如发送者,接收者,主题,内容等等。
3、发送邮件的测试代码
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 发送邮箱服务器
smtpserver = "smtp.163.com"
# 发送邮箱用户名密码,注意这里的密码为授权码。并非邮箱登录密码。
user = "aaaaaaaa@163.com"
password = "***********"
# 发送和接收邮箱
sender = "aaaaaaaa@163.com"
receiver = ["xxxxxxx@163.com", "yyyyyyyy@163.com", "zzzzzzzz@163.com"]
for i in range(3):
# 发送邮件主题和内容
subject = "来自李慢慢的第{}邮件".format(i+1)
content = "Hello,\n\n这是一封用python脚本发来的邮件哦。仅作测试。请忽略。\n\n-name:limanman\n-data:20221015\n"
# HTML邮件正文
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = sender
msg['To'] = ",".join(receiver)
# SSL协议端口号要使用465
smtp = smtplib.SMTP_SSL(smtpserver, 465)
# HELO向服务器标志用户身份
smtp.helo(smtpserver)
# 服务器返回结果确认
smtp.ehlo(smtpserver)
# 登录邮箱服务器用户名密码
smtp.login(user, password)
print("Send email start...")
print("test send : ", i)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("email send end!")
上述代码可以直接套用,使用时只需更改发送者和接收者,和发送的信息内容即可。不过最重要的是获得授权码,即获得发送者在服务器端收到的许可,只有拿到授权码才能发送邮件。不过也不能胡乱测试,听说会被封号的哟。
4、实测效果
上述代码运行的效果。
可以在手机上看到发送的邮件了。
5、授权码的获得
以163邮箱为例。
第一步:登陆网页163邮箱,找到设置并开启IMAP服务。
上述的授权密码就是代码中要用到的密码。
哎,大周末还这么卷,造孽吖,真是抱歉了。
休息了,休息了。