liunx环境下 python使用stmplib 发邮箱

linux  发送邮箱存在一些问题,  首先  必须使用SSL 加密操作, 端口  必须为465,    同时使用SSL 的时候还有一些问题, 必须再构造函数中传入Host(邮箱网站地址) ,    终于成功了,         

smtp_obj = smtplib.SMTP_SSL(host=HOST)

详细代码在下方,  大概说下流程

我使用的是163邮箱 ,首先你得 在163邮箱设置   运行客户端登陆 发邮箱,  

具体操作如下 :

之后再开启客户端授权码

这样操作就完成了 ,

代码编写  :

    # 网易163邮箱
    HOST = 'smtp.163.com'
    # 2> 配置服务的端口,默认的邮件端口是25. 465为ssl 的端口
    PORT = '465'
    # 3> 指定发件人和收件人。
    FROM = '[email protected]'
    # TO = 'xxxxx.@163com'
    # 4> 邮件标题
    SUBJECT = '爬虫异常警告'
    # 5> 邮件内容
    CONTENT = message + "\n" + str(ex)

    # 创建邮件发送对象
    # 普通的邮件发送形式
    #smtp_obj = smtplib.SMTP()

    # 数据在传输过程中会被加密。
    smtp_obj = smtplib.SMTP_SSL(host=HOST)

    # 需要进行发件人的认证,授权。
    # smtp_obj就是一个第三方客户端对象
    smtp_obj.connect(host=HOST, port=PORT)

    # 如果使用第三方客户端登录,要求使用授权码,不能使用真实密码,防止密码泄露。
    res = smtp_obj.login(user=FROM, password='授权码')
    print('登录结果:', res)

    # 发送邮件
    msg = '\n'.join(
        ['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT])  # ''此单引号不能少
    smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))

 

这个是通过我整理出来的, 你可能觉得,粘贴复制就能运行,很简单   却不知道我开始踩坑的幸苦,   如果可以点个赞吧 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章