zoukankan      html  css  js  c++  java
  • Python发送QQ邮件

    用Python来发送一个电子邮件需要以下几个步骤:
    1.注册一个邮箱(以QQ邮箱为例)
    2.需要特殊设置,以QQ邮箱为例:受限进入QQ邮箱的设置中心,点击"账户"选项,下滑可以看到"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"一栏,把"POP3/SMTP服务"打开(默认是关闭的),然后点击生成授权码,可以得到一串代码,如下图:

    3.通过Python代码实现邮件的自动发送:

    # 导入相应的包
    import smtplib
    from email.mime.text import MIMEText
    
    # MIMEText三个主要参数
    # 1. 邮件内容
    # 2. MIME子类型,在此案例我们用plain表示text类型
    # 3. 邮件编码格式,一定要用"utf-8"编码,因为内容可能包含非英文字符,不用的可能收到的邮件是乱码
    msg = MIMEText("这是我用python发送的邮件", "plain", "utf-8")
    
    # 发送email地址,填入你授权码的那个邮箱地址,此处地址是我常用QQ的地址
    from_addr = "861xxx467@qq.com"
    # 此处密码填你之前获得的授权码,不是你的QQ邮箱密码
    from_pwd = "foqbewnhiilvbdci"
    
    # 接受email地址,填入你要发送的邮箱地址,此处地址是我另外一个QQ小号的邮箱地址
    to_addr = "792xxx621@qq.com"
    
    # 输入SMTP服务器地址,并使用该服务器给你发送电子邮件
    # 此处根据不同的邮件服务商有不同的值,
    # 现在基本任何一家邮件服务商,如果采用第三方收发邮件,都需要开启授权选项
    # 腾讯QQ邮箱的SMTP地址是"smtp.qq.com"
    smtp_srv = "smtp.qq.com"
    
    try:
        # 不能直接使用smtplib.SMTP来实例化,第三方邮箱会认为它是不安全的而报错
        # 使用加密过的SMTP_SSL来实例化,它负责让服务器做出具体操作,它有两个参数
        # 第一个是服务器地址,但它是bytes格式,所以需要编码
        # 第二个参数是服务器的接受访问端口,SMTP_SSL协议默认端口是465
        srv = smtplib.SMTP_SSL(smtp_srv.encode(), 465)
        # 使用授权码登录你的QQ邮箱
        srv.login(from_addr, from_pwd)
        # 使用sendmail方法来发送邮件,它有三个参数
        # 第一个是发送地址
        # 第二个是接受地址,是list格式,意在同时发送给多个邮箱
        # 第三个是发送内容,作为字符串发送
        srv.sendmail(from_addr, [to_addr], msg.as_string())
        print('发送成功')
    except Exception as e:
        print('发送失败')
    finally:
        #无论发送成功还是失败都要退出你的QQ邮箱
        srv.quit()

     运行后我的另外一个QQ小号就成功收到了我大号发来的电子邮件:

    可以看到这封邮件有内容,但是并没有发件人和主题,这里可以用到另外一个模块Header来给我们的邮件添加发件人和主题:

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    msg = MIMEText("这是我用python发送的邮件",  "plain", "utf-8")
    
    # 填写发送方的信息
    header_from = Header("皮皮嘉", "utf-8")
    msg['From'] = header_from
    
    # 填写接受方的信息
    header_to = Header("皮皮嘉的小号", 'utf-8')
    msg['To'] = header_to
    
    # 填写该邮件的主题
    header_sub = Header("Python", 'utf-8')
    msg['Subject'] = header_sub
    
    from_addr = "861709467@qq.com"
    from_pwd = "foqbewnhiilvbdci"
    to_addr = "792555621@qq.com"
    
    smtp_srv = "smtp.qq.com"
    
    try:
        srv = smtplib.SMTP_SSL(smtp_srv.encode(), 465)
        srv.login(from_addr, from_pwd)
        srv.sendmail(from_addr, [to_addr], msg.as_string())
        print('发送成功')
    except Exception as e:
        print('发送失败')
    finally:
        srv.quit()

    这是在来看就发现有主题和发送人了:

  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/wjw2018/p/10549663.html
Copyright © 2011-2022 走看看