专栏首页面朝大海春暖花开python smtplib在linux上发送邮件失败解决方式

python smtplib在linux上发送邮件失败解决方式

通过zabbix配置邮件告警的时候,发现邮件访问不了

之后将脚本copy到window上执行发现可以正常发送

linux却不行,以为是python版本问题,经过检验并不是

新建send.py文件 代码如下

import smtplib
from email.mime.text import MIMEText
import sys

# configure your own parameters here
#下面邮件地址的smtp地址
mail_host = 'smtp.163.com'
#用来发邮件的邮箱,在发件人抬头显示(不然你的邮件会被当成是垃圾邮件)
mail_user = 'chy1559843332@163.com'
# 客户端授权码
mail_auth = '********'
# 发送方显示的名称
send_name = mail_user
# 接收方显示的名称
recv_name = mail_user

def excute(to, title, content):
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['From'] = send_name
    msg['To'] = recv_name
    msg['Subject'] = title
    server = smtplib.SMTP(mail_host, 25)
    server.login(mail_user,mail_auth)
    server.sendmail(mail_user,to,msg.as_string())
    server.quit()

if __name__ == '__main__':
    excute('1559843332@qq.com', 'chyhis is title', 'this is content')

在windows下,通过python send.py 执行之后即可收到邮件

之后放在linux上却 /usr/local/python3/lib/python3.7/socket.py

Traceback (most recent call last):
  File "aa.py", line 22, in <module>
    excute('1559843332@qq.com', 'chy this is title', 'mcdh cnhk')
  File "aa.py", line 16, in excute
    server = smtplib.SMTP(mail_host, 465)
  File "/usr/local/python3/lib/python3.7/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/local/python3/lib/python3.7/smtplib.py", line 338, in connect
    (code, msg) = self.getreply()
  File "/usr/local/python3/lib/python3.7/smtplib.py", line 387, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/local/python3/lib/python3.7/socket.py", line 589, in readinto
    return self._sock.recv_into(b)

之后参考https://www.jianshu.com/p/fc55404b6db7

解决方式:

smtplib.SMTP('smtp.163.com', 25)

修改为
smtplib.SMTP_SSL('smtp.163.com', 465)

之后在linux上执行python send.py,嗯,完美!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springMVC

    1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3...

    陈灬大灬海
  • mysql正则表达式,实现多个字段匹配多个like模糊查询

    一个questions表,字段有题目(TestSubject),选项(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求字段...

    陈灬大灬海
  • mybatis递归,一对多代码示例

    由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合。

    陈灬大灬海
  • Win32对话框程序(1)

    之前学C语言是一直都是在控制台下面操作的,面对的都是黑框框,严重的打击了学习的兴趣。后来在TC下进行C语言课程设计,做了图形界面编程,但都是点线面画的…… 

    李拜六不开鑫
  • 学界 | 斯坦福数据科学Phd新课放出阅读清单,你读过哪些?

    大数据文摘
  • Cobalt Strike4.2 破解版

    1.https://www76.zippyshare.com/v/yH17WCFH/file.html

    Aran
  • 安恒信息与长城网际达成战略合作 首批入驻海南信息安全基地

    2018年5月12日,安恒信息与中电长城网际系统应用有限公司(以下简称长城网际)于海南三亚签署战略合作协议,正式加入长城网际生态圈合作伙伴体系,成为首批入驻中国...

    安恒信息
  • PHP实现字母数字混合验证码功能

    一款简单的PHP实现字母数字混合验证码,支持自定义验证码、验证码图片、宽度、高度、个数、背景图片等

    砸漏
  • unisound_asr 云知声 语音识别 python版接口

    抽空,实现了一份云知声 语音转写的python版本。 使用python通过调用动态库实现。 云知声官网: http://dev.hivoice.cn/sdk_d...

    cpuimage
  • Windows关闭系统索引服务,减少CPU占用

    Windows10自带的索引功能还是有些鸡肋,搜索速度一直上不去,还会占用系统资源(不低啊)。特别是使用了Everything等第三方快速搜索工具的朋友,就不会...

    小锋学长

扫码关注云+社区

领取腾讯云代金券