import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrfrom datetime import datetime # 发件人邮箱账号my_sender = "XXXX@"# my_sender = "1525943131@"# 收件人邮箱账号my_user = ["XXXX@"]# my_user = ["XXXX@"]# 授权码,不是账号的密码authorization_code = "********"# authorization_code = "****************"# 发送人姓名sender_name = "After__today"# 接收人姓名user_name = ["天晴的时候会下雨"]# 发件服务器smtp = "" #网易163# smtp="" #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]+"现在时间为"+str(now_time)+"很抱歉打扰您!"+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")。
私信小编01即可获取大量Python学习资料
如果是使用QQ邮箱发送邮件,同样需要设置授权码,QQ邮箱——>设置——>账户,然后找到如下:
按步骤开启POP3/SMTP服务,authorization_code改为生成的16位授权码即可。
使用outlook发送邮件使用的是POP3服务,代码稍有改动
import client as win32from datetime import datetime now_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")sub = "statistic_result"body = "现在时间为" + now_timeoutlook = win32.Dispatch("outlook.application")receivers = ["XXXX@"]mail = outlook.CreateItem(0)mail.To = receivers[0]mail.Subject = sub# mail.Attachimage.Add("C:work.jpg")mail.Body = bodymail.Attachments.Add("C:work.jpg")mail.Send()
添加账户信息的过程见article/e3c78d6496f6d73c4c85f5a2.html。
(想往正文中添加图片信息我试了很久都不行,Attachimage方法用不了,希望会的同学能在评论区告知,谢谢(/鞠躬)。)
发送的时候可能会提示安全警告,关掉的方法为在outlook的选项中信任中心的设置中,把编程访问中的从不发送警告勾选上,如果和我截图一样是灰白色无法勾选,应该是电脑安全级别过高,在控制面板中可以更改。