美文网首页程序员
python发送简单邮件

python发送简单邮件

作者: 愤怒的小猥琐 | 来源:发表于2018-04-16 22:58 被阅读0次

    在那些卑微的日子里,不敢去仰望星空的浩瀚,不敢去触碰人间的静好,也不敢去凝望高山的雄壮,不敢去期待流水的细长。

    代码

    import smtplib
    from email.header import Header
    from email.mime.text import MIMEText
    if __name__ == '__main__':
        email_host = 'smtp.163.com'  
        email_user = '18735123416@163.com'
        email_pwd = '***'  
        maillist = '**@qq.com', '**@qq.com'
        me = email_user
        msg = MIMEText('这是个python测试邮件,不用回复。') 
        msg['Subject'] = 'python测试'  
        msg['From'] = me  # 发送者账号
        smtp = smtplib.SMTP(email_host, 25)  
        smtp.login(email_user, email_pwd) 
        for email in maillist:
            smtp.sendmail(me, email, msg.as_string())
        smtp.quit()  # 发送完毕后退出smtp
        print('email send success.')
    

    注意事项

    1. 不同服务器host主机不同
    • POP3服务器: pop.163.com
    • SMTP服务器: smtp.163.com
    • IMAP服务器: imap.163.com
    1. email_pwd 为授权码,不是你的邮箱密码,必须确保开启SMTP服务才能通过SMTP邮箱代理发送
      SMTP设置
      对勾点上.png
      如果对勾没有点上,在点的时候会让你设置授权码,这个授权码就是上面发送的密码
    2. 25端口为SMTP端口,如果使用SSL,端口改为465/994

    常见错误汇总

    1. ConnectionRefused
    • 邮箱没有开通SMTP服务
    • 登录密码没有使用授权码
    • 晚上一般服务器邮箱网络不稳定,163邮箱设置的时候隔天才生效

    2.500 Error: bad syntax
    这个错误只出现在 Windows 系统上。遇到了这个错误,可在“控制版面”中点击“查看网络状态和任务”进入“网络和共享中心网络连接详细信息”中看到“连接特定的 DNS 后缀”这一项(如下图所示),它的值应该和以上所示报错信息中红色文字所示部分类似,这个值中含有“空格”就是导致发信出错的原因。


    500.png

    修改步骤为:在“控制版面”中点击“查看网络状态和任务”进入“网络和共享中心”,点击现在使用的网络连接,点击网络连接的【属性】按钮,双击“Internet 协议版本 4(TCP/IPv4)”这一项,再点击【高级】按钮,切换到“DNS”标签,把“此连接的 DNS 后缀”修改为 HOST 或清空,然后依次确认保存。

    1. 线上服务器无法发送邮件或者发送邮件时间过长
    • 线上服务器一般默认25端口封闭,必须申请25端口解封才能发送邮件
    • 25端口发送邮件一定要借助第三方的SMTP服务,不要自己搭建SMTP然后发送邮件,会让自己的服务器公网IP被回收

    相关文章

      网友评论

        本文标题:python发送简单邮件

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