作者 | Che_Hongshu
来源 | AI蜗牛车(ID:AI_For_Car)
一、前言
利用Python进行邮件的发送,这个功能自我感觉主要应用于检测或者报告之类,我两次运用这个功能。
-
第一次用在主要发送实时的数据给一个邮箱
-
第二次用是检测挂在服务器端一直在跑的
P
ython程序是否出现异常情况。
我这里采用163邮箱(sender)给qq邮箱(receiver)发送文本类邮件
如何在服务器端托管执行
P
ython3工程请看我另一篇文章:
【TOOLS】在云服务器上托管执行自己的python3工程程序
二、提取163邮箱的客户端授权密码
首先登陆163邮箱的网页版本。
最后点击开启,自己设置密码即可。
之后这个密码不要忘记了,代码中要用到。
三、代码
show you my code
1
from
smtplib
import
SMTP
2
from
email.mime.text
import
MIMEText
3
from
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 “””
17
def
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
31
if
__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,
解决方案,把测试和test类似的语句换掉,比如我的demo code中的比较正常的语言即可。
接收邮箱显示。
有subject和content对应。
对于在阿里云服务器上运行本文章有几处需要改动的地方。
首先因为阿里云服务器里面有很多端口都被限制,所以以下的代码在本地可以成功,但在云服务器上并出现问题
通过我的不断实验,最终成功的为port=587
并且我发送的邮件改为qq邮箱,接受为网易163邮箱,服务器host也改为”smtp.qq.com”
qq邮箱操作如下
qq邮箱操作如下
获取qq邮箱授权码
点击开启,给qq官方发送一个短信即可获得,别忘了复制保存。
修改后的代码有改动,请自己对照使用,亲测好用
1
from
smtplib
import
SMTP
2
from
email.mime.text
import
MIMEText
3
from
email.header
import
Header
4
5
def
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
22
if
__name__ ==
“__main__”
:
23
“””
24 sender和receiver对调
25 “””
26
receiver = [
“xxx@163.com”
]
27
send_email(
“smtp.qq.com”
,
“xxx@qq.com”
,
“shouquanma”
,receiver ,
“程序出问题了”
,
“ps”
)
结果
(*本文仅代表作者观点,转载请联系原作者)
◆
CTA核心技术及应用峰会
◆
5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。
识别海报二维码查看
更多重磅嘉宾,并抢购优惠票价。
添加小助手微信
15101014297
,备注「
CTA
」,了解详情。
扫描二维码,立即参会。