美文网首页
python自动发送邮件

python自动发送邮件

作者: 3f45b7ea156c | 来源:发表于2020-02-11 20:19 被阅读0次

    python自动发送邮件

    在说python发送邮件之前,需要了解一下简单的邮件发送知识,邮件发送一般通过SMTP协议,你可以把它看作类似于TCP协议一样,我们通过这个协议,然后按照这个协议的格式给数据,就能发送邮件了。

    利用smtplib发送邮件

    像把大象装到冰箱里一样,利用python发送邮件也需要个两三步。

    第一步

    import smtplib
    from email.mime.text import MIMEText
    # 第三方 SMTP 服务
    mail_host = "smtp-mail.outlook.com"  # 设置服务器 163的为smtp.163.com,可以去对应邮箱官网去查  
    
    mail_user = "***"  # 用户名
    mail_pass = "***"  # 口令/密码或者授权码
    
    sender = '***' # 发信者
    receivers = ['***']  #  收信者,可以多个收件人
    

    首先需要导入相关的包,然后设置smtp服务器,一般在邮箱官网比如163/outlook的官网就可以找到,用户名一般就是邮箱名,而口令则一般是授权码,你可以去官网或者网上搜一下对应邮箱第三方应用授权怎么弄的,一般设置后会给一个授权码,你就可以拿这个授权码使用第三方应用登陆了。(比如用QQ邮箱客户端登陆163账号)

    outlook 如何新建授权码(应用密码)

    163的授权码在设置里面可以找到

    163授权码

    第二步

    message = MIMEText(msg, 'plain','utf-8')  # 内容, 格式, 编码
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)
    message['Subject'] = title
    

    这一步主要是写正文,标题。msg对应的就是正文,而From和To对应的是收件人和发件人,title对应标题。把他们封装到message。

    第三步

    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 587)  # 587 为 SMTP 端口号
    print("connect")   
    
    # smtpObj.ehlo()  # 向邮箱发送SMTP 'ehlo' 命令 针对outlook需要
    # smtpObj.starttls()
    
    smtpObj.login(mail_user, mail_pass)
    print("login in")
    # print(message.as_string())
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
    

    这一步开始真正的连接服务器,并登陆以及发送邮件。这一步也是出错最多的时候。

    这里如果报错需要注意的有几点:

    • smtplib.SMTP()可以换成smtplib.SMTP_SSL()
    • port端口号可以尝试 587 465 25
    • smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server则检查 smtpObj.ehlo()、smtpObj.starttls()是否被注释掉(163的邮箱注释掉能用,outlook的好像不能用)
    • 554 DT:SPM smtp12 163邮箱可能会有这个错误,则尝试在收件人里面加入发件人

    后话,可能把这个整好了,发现也没什么玩的,因为没有内容可以发,我做这个主要是之前写过一篇用用python自动发微信每日一句,但是后来微信的web接口被封了,所以无法用python登陆了,所以我就将那个脚本修改成了用邮箱发。你也可以爬取一些新闻或者天气以及壁纸发给邮件,做一个信息聚合入口,也挺好玩的。

    之前我用python做的python获取天气预报并微信发送

    https://blog.csdn.net/qq_28888837/article/details/81000857

    相关文章

      网友评论

          本文标题:python自动发送邮件

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