博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python发邮件实例
阅读量:4966 次
发布时间:2019-06-12

本文共 3383 字,大约阅读时间需要 11 分钟。

发QQ邮件

  首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启。

from email.header import Headerfrom email.mime.text import MIMETextfrom email.utils import parseaddr,formataddrimport smtplibfrom app01 import modelsdef _format_addr(s):    name,addr = parseaddr(s)    return formataddr((Header(name,'utf-8').encode(),addr))def send_mail():    four_hour_pro, eight_hour_pro = read()    print(four_hour_pro)    print(eight_hour_pro)    print("Start sending")    #发件人地址    from_addr = 'xxx@qq.com'    #密码邮箱的授权码,不是你的QQ密码,是要向腾讯申请的    password = 'fghjkjhgfdghj'    #收件人地址    to_addr =  ['yyy@qq.com','mmm@gmail.com']#多个收件人放在列表中    #邮箱服务器地址    smtp_server = 'smtp.qq.com'    #设置邮件信息    data = "Hello World"    msg = MIMEText(data,'plain','utf-8')    msg['From'] = _format_addr(from_addr)    msg['To'] = _format_addr(to_addr)    msg['Subject'] = Header(u'邮件标题','utf-8').encode()    #发送邮件    server = smtplib.SMTP_SSL(smtp_server,465)    #打印出和SMTP服务器交互的所有信息    server.set_debuglevel(1)    #登录SMTP服务器    server.login(from_addr,password)    #sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。    server.sendmail(from_addr,to_addr,msg.as_string())    server.quit()    print('Mail sended succeed!')if __name__ == '__main__':    send_mail()

 

发Google邮件

  网段很重要,国内由于GREAT WALL的存在是发不了Google邮件的,VPN的选择最好也是在美国,日本的VPN会出现no route host的报错 

import smtplibimport base64from email.header import Headerfrom email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import COMMASPACESENDER = 'xxx@gmail.com'#发件人SMTP_SERVER = 'smtp.gmail.com'#谷歌的邮件服务器,不要改USER_ACCOUNT = {
'username':'xxx@gmail.com', 'password':'发件人密码'}#用于登陆的账户信息SUBJECT = u"邮件标题"RECEVIVERS = ['xxx@qq.com']#收件人def send_mail(receivers=RECEVIVERS, sender=SENDER, user_account=USER_ACCOUNT, subject=SUBJECT): print("Start sending...") #设置邮件正文 data = "邮件正文内容" #下面都不用改 msg_root = MIMEMultipart() # 创建一个带附件的实例 msg_root['Subject'] = subject # 邮件主题 msg_root['To'] = COMMASPACE.join(receivers) # 接收者 msg_text = MIMEText(data, 'html', 'utf-8') # 邮件正文 msg_root.attach(msg_text) # attach邮件正文内容 smtp = smtplib.SMTP('smtp.gmail.com:587', timeout=10) smtp.ehlo() smtp.starttls() smtp.login(user_account['username'], user_account['password']) smtp.sendmail(sender, receivers, msg_root.as_string()) print("Email sended succeed!")if __name__ == '__main__': send_mail()

 

发Google邮件遇到的问题:邮件报错smtplib.smtpauthentic

  出现这个错误的原因有两个:

    • Google阻止用户使用不符合他们安全标准的应用或设备登陆gmail 
    • Gmail没有解除验证码认证

  解决方法:

    • 允许不够安全的应用使用您的账号:点击如下链接,开启“允许不够安全的应用”功能  
    • 解除gmail验证码认证: 
      点击如下链接,然后点击继续即可 

发新浪邮件

  记得先去你的设置中将SMTP权限开启(有可能会出现发送后被系统退回的情况,还没撸明白是为什么)

import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Headeruser = 'xxx@sina.com'#发件人pwd = '49876545678'#发件人邮箱密码to = ['yyy@gmail.com',"mmm@gmail.com"]#收件人def send_mail():    print("Start sending...")    msg = MIMEMultipart()    msg['Subject'] = Header('成交信息', 'utf-8')    msg['From'] = Header(user)    data = "邮件正文内容"    content1 = MIMEText(data, 'plain', 'utf-8')    msg.attach(content1)        s = smtplib.SMTP('smtp.sina.com')    s.set_debuglevel(1)  # 调试使用    # s.starttls()  # 建议使用    s.login(user, pwd)    s.sendmail(user, to, msg.as_string())    s.close()    print("Sended succeed")if __name__ == '__main__':    send_mail()

 

转载于:https://www.cnblogs.com/zhuminghui/p/9177587.html

你可能感兴趣的文章
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
DELPHI开发LINUX包
查看>>
CENTOS7安装OPENSSL
查看>>
LITEIDE配置
查看>>
DELPHI开发LINUX的动态库
查看>>
TThread.Queue和TThread.Synchronize的区别
查看>>