美文网首页
python 使用腾讯企业邮箱发送邮件

python 使用腾讯企业邮箱发送邮件

作者: eleksbai | 来源:发表于2018-06-03 15:59 被阅读0次

    概述

    使用flask_mail 模块中碰到问题,于是使用基础的smtplib模块进行调试
    以前搞过QQ邮箱,代码找不到了,为此这次记录下方便以后复制粘贴
    如果简单的代码就是会莫名奇妙的报错,十之八九是单词拼错了。

    一般的测试方法!!!
    使用Foxmail登录。在foxmail的账户设置里看具体配置。
    如用户名,服务器地址,端口。然后复制到代码里。

    • QQ邮箱及腾讯企业邮箱都要使用授权码进行python登陆
    • 腾讯邮箱支持SSL(不强制开启), 不支持TLS。
    错误列表
    • smtplib.SMTPSenderRefused: (501, 》》》 登陆地址与发件人地址不一致
    • smtplib.SMTPAuthenticationError: (535, 》》》用户名密码错误
    用户名错误

    admin写成 amdin了,吐血三升


    535,用户名错误
    密码错误
    535,密码错误
    发件人与登陆人的邮件地址不一致

    因为登陆时我邮箱地址用的是字符串,发送时用的是变量,正常应该统一使用变量防止出错


    501错误,地址不一致

    代码示例

    from email.header import Header
    from email.mime.text import MIMEText
    from email.utils import formataddr
    import smtplib
    
    # 用户信息
    from_addr = 'XXXXX_admin@XXXX.com'
    password = 'H3Sv73Gq4BV7XDqG' # # 腾讯QQ邮箱或腾讯企业邮箱必须使用授权码进行第三方登陆
    to_addr = '12345678@qq.com'
    smtp_server = 'smtp.exmail.qq.com' # 腾讯服务器地址
    
    # 内容初始化,定义内容格式(普通文本,html)
    msg = MIMEText('我要发邮件......', 'plain', 'utf-8')
    
    # 发件人收件人信息格式化 ,可防空
    # 固定用法不必纠结,我使用lambda表达式进行简单封装方便调用
    lam_format_addr = lambda name, addr: formataddr((Header(name, 'utf-8').encode(), addr))
    # 传入昵称和邮件地址
    msg['From'] = lam_format_addr('发件人昵称', from_addr) # 腾讯邮箱可略
    msg['To'] = lam_format_addr('收件人昵称(服务商会自动替换成用户名)', to_addr) # 腾讯邮箱可略
    
    # 邮件标题
    msg['Subject'] = Header('邮件的标题......', 'utf-8').encode() # 腾讯邮箱略过会导致邮件被屏蔽
    
    # 服务端配置,账密登陆
    server = smtplib.SMTP(smtp_server, 25)
    
    # 腾讯邮箱支持SSL(不强制), 不支持TLS。
    # server = smtplib.SMTP_SSL(smtp_server, 465) # 按需开启
    # 调试模式,打印日志
    # server.set_debuglevel(1) # 按需开启
    
    # 登陆服务器
    server.login(from_addr, password)
    
    # 发送邮件及退出
    server.sendmail(from_addr, [to_addr], msg.as_string()) #发送地址需与登陆的邮箱一致
    server.quit()
    

    相关文章

      网友评论

          本文标题:python 使用腾讯企业邮箱发送邮件

          本文链接:https://www.haomeiwen.com/subject/txmjsftx.html