使用python自动发邮件
程序员文章站
2022-06-16 08:39:32
...
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from datetime import datetime
# 发件人邮箱账号
my_sender = 'aaa@qq.com'
# my_sender = 'aaa@qq.com'
# 收件人邮箱账号
my_user = ['aaa@qq.com']
# my_user = ['aaa@qq.com']
# 授权码,不是账号的密码
authorization_code = '********'
# authorization_code = '****************'
# 发送人姓名
sender_name = 'After__today'
# 接收人姓名
user_name = ['天晴的时候会下雨']
# 发件服务器
smtp = 'smtp.163.com' #网易163
# smtp='smtp.qq.com' #qq邮箱
def mail(text):
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
ret = True
for i in range(len(my_user)):
text1 = '您好 '+user_name[i]+'\n现在时间为'+str(now_time)+'\n很抱歉打扰您!\n'+text
try:
msg = MIMEText(text1,'plain','utf-8')
# 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['From'] = formataddr([sender_name,my_sender])
# 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['To'] = formataddr([user_name[i],my_user[i]])
# 邮件的主题,也可以说是标题
msg['Subject'] = "系统提示信息"
# 发件人邮箱中的SMTP服务器,端口是25
server = smtplib.SMTP(smtp,25)
# 发件人邮箱账号、邮箱密码
server.login(my_sender, authorization_code)
# 发件人邮箱账号、收件人邮箱账号、发送邮件
server.sendmail(my_sender, [my_user[i],], msg.as_string())
# 关闭连接
server.quit()
except Exception:
ret = False
finally:
next
return ret
text = '发送成功'
mail(text)
这里使用的是163邮箱,需要注意要在 “邮箱中心” 设置客户端授权密码,否则会报错(550, b'User has no permission'),authorization_code就是设置的授权码,如果使用邮箱密码,会报错(535, b'Error: authentication failed')。
如果是使用QQ邮箱发送邮件,同样需要设置授权码,QQ邮箱——>设置——>账户,然后找到如下:
按步骤开启POP3/SMTP服务,authorization_code改为生成的16位授权码即可。
使用outlook发送邮件使用的是POP3服务,代码稍有改动
import win32com.client as win32
from datetime import datetime
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
sub = 'statistic_result'
body = '现在时间为' + now_time
outlook = win32.Dispatch('outlook.application')
receivers = ['aaa@qq.com']
mail = outlook.CreateItem(0)
mail.To = receivers[0]
mail.Subject = sub
# mail.Attachimage.Add('C:/Users/Administrator/Desktop/work.jpg')
mail.Body = body
mail.Attachments.Add('C:/Users/Administrator/Desktop/work.jpg')
mail.Send()
添加账户信息的过程见https://jingyan.baidu.com/article/e3c78d6496f6d73c4c85f5a2.html。(想往正文中添加图片信息我试了很久都不行,Attachimage方法用不了,希望会的同学能在评论区告知,谢谢(/鞠躬)。)
发送的时候可能会提示安全警告,关掉的方法为在outlook的选项中信任中心的设置中,把编程访问中的从不发送警告勾选上,如果和我截图一样是灰白色无法勾选,应该是电脑安全级别过高,在控制面板中可以更改。
上一篇: C#序列化和反序列化
推荐阅读
-
Python的Flask框架应用程序实现使用QQ账号登录的方法
-
使用Python导出Excel图表以及导出为图片的方法
-
在Python的Flask中使用WTForms表单框架的基础教程
-
使用Python对IP进行转换的一些操作技巧小结
-
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
-
使用Python发送各种形式的邮件的方法汇总
-
Windows上使用virtualenv搭建Python+Flask开发环境
-
使用SQL Server 获取插入记录后的ID(自动编号)
-
Python使用MySQLdb for Python操作数据库教程
-
解决EditText、ListView以及GridView同时使用,输入法自动跳出来的方法