zoukankan      html  css  js  c++  java
  • 用python发邮件实例

    发QQ邮件

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

    from email.header import Header
    from email.mime.text import MIMEText
    from email.utils import parseaddr,formataddr
    import smtplib
    from app01 import models
    
    def _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 smtplib
    import base64
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.utils import COMMASPACE SENDER = '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

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

      解决方法:

    发新浪邮件

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

    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipartfrom email.header import Header
    
    user = '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()
  • 相关阅读:
    Aviator
    Docker是什么
    vulnhub--SickOs1.1
    vulnhub--HackInOS
    本地浏览器远程访问服务器tensorboard(MobaXterm)
    dogecoin
    python多进程
    gpu
    python调用父类(超类)
    linux更改终端显示颜色(用户名颜色等)
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/9177587.html
Copyright © 2011-2022 走看看