Python发送邮件smtplib.SMTP各报错问题的解决方法

经测试可用的发送邮件代码:

import smtplib
from email.mime.text import MIMEText

# 第三方 SMTP 服务
mail_host = "smtp.163.com"  # SMTP服务器
mail_user = "username"  # 用户名
mail_pass = "passwd"  # 密码(这里的密码不是登录邮箱密码,而是授权码)

sender = ‘[email protected]‘  # 发件人邮箱
receivers = [‘[email protected]‘]  # 接收人邮箱

content = ‘Python Send Mail !‘
title = ‘Python SMTP Mail Test‘  # 邮件主题
message = MIMEText(content, ‘plain‘, ‘utf-8‘)  # 内容, 格式, 编码
message[‘From‘] = "{}".format(sender)
message[‘To‘] = ",".join(receivers)
message[‘Subject‘] = title

try:
    smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 启用SSL发信, 端口一般是465
    smtpObj.login(mail_user, mail_pass)  # 登录验证
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
    print("mail has been send successfully.")
except smtplib.SMTPException as e:
    print(e)

  

问题解决与注意点:

1.报错:Error: A secure connection is requiered(such as ssl)

解决:因为邮箱SSL验证的问题,因此把smtplib.SMTP()改成smtplib.SMTP_SSL(),端口号为465

2.报错:535, b‘Error: authentication failed‘

解决:可能是由于用户名不正确,因此代码中的用户名应该填写为邮箱地址@前面部分 ,或是在邮箱设置的帐户昵称,如下图昵称Morning和马赛克部分,都可作为用户名

3.SMTP服务器可根据发送的邮箱做相应的选择,如代码中使用163邮箱则设为mail_host = "smtp.163.com"

可以改成"smtp.126.com"、"smtp.qq.com"等等

4.代码中的密码mail_pass为授权码,并非邮箱密码,授权码用于登录第三方邮件客户端的专用密码

QQ邮箱可通过设置→帐户→生成授权码;网易邮箱126/163可通过设置→客户端授权密码

原文:https://blog.csdn.net/dearmorning/article/details/81069075
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/cloak/p/11185171.html

时间: 2024-11-05 20:31:59

Python发送邮件smtplib.SMTP各报错问题的解决方法的相关文章

Python首次安装后运行报错(0xc000007b)的解决方法

最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧. 错误提示如下: 其实这是一个挺常见的系统报错,缺乏VC++库. 我安装的是python3.5.2,这个版本需要的vc版本是2015的了,下载:Microsoft Visual C++ 2015 update 3 安装完后发现就正常了: 总结 通过以上的方法就能轻松解决首次安装Python后运行报错的问题,希望本

Anaconda3使用matplotlib画图报错问题的解决方法

在Anaconda3中使用matplotlib画图报错:ModuleNotFoundError: No module named 'PyQt4' 试了网上的几种方法都不奏效,最后在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 上下载和Python版本对应PyQt4的.whl文件,然后用pip命令安装. 此刻再执行程序不报上述错误,在执行到plt.figure()命令时又报:TypeError:'figure' is an unkown keyw

eclipse robovm插件报错原因及解决方法

在eclipse上安装robovm插件经常会报错. 大多数时候是由于没有使用JDK7的原因,很多时候由于mac os中自带的jdk6干扰,即使在mac中设置了JAVA_HOME为JDK7的路径robovm插件也不好用,这时候就需要在eclipse启动时指定jdk7的java.exe来启动eclipse本身.操作过程如下: 1:切换到eclipse路径下. 2:执行命令:./eclipse -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/

php安装make报错信息及解决方法

make错误 Generating phar.phar /root/php-5.3.27/sapi/cli/php:error while loading shared libraries: libmysqlclient.so.18: cannot open sharedobject file: No such file or directory make: *** [ext/phar/phar.phar] 错误 127 解决:[[email protected] php-5.3.27]# ln

vue.js常见的报错信息及其解决方法的记录

1.Vue packages version mismatch 翻译:vue包版本匹配错误 报错样例: 报错原因:通常出现于一些依赖库的更新或者安装新的依赖库之后(可以认为npm update已经成为一种习惯),导致了vue和vue-template-compiler的版本不一致. 解决方案:统一vue和vue-template-compiler的版本 1 "vue": "2.3.4", 2 "vue-template-compiler": &q

安装apk报错INSTALL_FAILED_UPDATE_INCOMPATIBLE的解决方法

其实不能叫解决方法,因为最后没解决(囧),只是觉得解决的过程有一定的意义,故记录一下 问题的产生是因为要在一部中兴手机上安装中兴应用市场,不过手机上之前已经有了中兴应用市场(我自己要装的是debug版的,没签名).于是乎第一次安装就报上面的错了 一看到错我就纳闷了,不是把老版本的apk卸了吗,怎么还是报冲突.于是网上找了半天,在/data/data/目录下把该apk的目录删了,再run,依然无效. 又在网上看到另一种做法,把/system/packages.xml中该apk的节点信息删除.看了下

CentOS yum报错的一般解决方法

centos-yum update问题-103 在centOs上安装软件时.提示报错信息: Could not retrieve mirrorlisthttp://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was 14: PYCURL ERROR 6 - "Couldn't resolvehost 'mirrorlist.centos.org'" Could not retrieve mirro

Server U报错550的解决方法

服务器环境为WIN2008 R2,安装最新版Server U. 用户反映打不开根目录下的某个二级文件夹,报错550 %s: permission denied,到控制台检查后,发现该用户所使用ftp账号拥有全部权限,尝试删除重建ftp账号,依旧报错.于是再次检查本地文件夹NTFS权限,发现该二级文件夹被单独设置过权限,没有从父目录继承权限,且仅有administrator账号拥有访问权.于是尝试给该二级文件夹添加administrators组权限,然后再测试FTP方式打开,问题解决!

报错信息及解决方法

1.eclipse使用maven,启动工程tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.Contex 原因:tomcat 中没有相关的jar,但是工作空间是有这些jar 的: 已解决:https://blog.csdn.net/java_mr_zheng/article/details/50166167 项目 -> 属性 -> Deployment Assembly -> Add -&