• 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()

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

  • 相关阅读:
    oracel 备份导出报错 EXP-00091: Exporting questionable statistics
    将多张图片快速制作成一个PDF文件
    自连接表:M可能无下级,可能有下级
    STL迭代器失效总结
    DNS劫持和DNS污染的区别
    snprintf函数用法(转)
    sql查询面试题
    linux获取主机信息
    linux网络通信中的地址形式转换
    printf函数编程小技巧
  • 原文地址:https://www.cnblogs.com/wjw2018/p/10549663.html
Copyright © 2020-2023  润新知