python3实现163邮箱SMTP发送邮件
作者:微光刺眼丶 时间:2021-02-28 07:59:19
SMTP协议
首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
发送邮件之前的配置:
上面说了是使用SMTP协议发送的邮件,所以需要先查看你的发件人邮箱是否有开启SMTP协议,如没有,则需要开启,我测试使用的是163.com的邮箱作为发信人邮箱,在设置中开启SMTP协议如下图所示。
测试的前提是你需要开通客户端授权,开通后会让你设置密码,那个密码要记好,下面的passwd接收的是授权密码而不是邮箱密码!否则会出现下图所示的错误提示:
小栗子:
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "***" # 用户名
mail_pass = "***" # 授权密码,非登录密码
sender = ***@163.com' # 发件人邮箱(最好写全, 不然会失败)
receivers = [***@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
content = '我用Python'
title = '人生苦短' # 邮件主题
def sendEmail():
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)
def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
email_client = smtplib.SMTP(SMTP_host)
email_client.login(from_account, from_passwd)
# create msg
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') # subject
msg['From'] = from_account
msg['To'] = to_account
email_client.sendmail(from_account, to_account, msg.as_string())
email_client.quit()
if __name__ == '__main__':
sendEmail()
# receiver = '***'
# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)
如果测试出现报错,请看网易邮箱给出的状态码及含义。
菜鸟教程也有详细教程。
本文有参考孙华强的博客,十分感谢。
来源:https://blog.csdn.net/weixin_40475396/article/details/78693408
标签:python,163邮箱,SMTP
0
投稿
猜你喜欢
Python中的类型提示(Type Hints)总结
2023-12-24 02:26:46
一直闪烁变色的超级链接代码
2008-02-27 13:08:00
Python实现各种邮件发送
2021-09-01 17:35:47
tensorflow学习教程之文本分类详析
2023-10-18 17:56:40
python Multiprocessing.Pool进程池模块详解
2023-08-25 09:24:59
YOLOv5改进之添加CBAM注意力机制的方法
2023-07-22 20:48:52
JavaScript中CreateTextFile函数
2024-04-18 10:49:03
anaconda jupyter不能导入安装的lightgbm解决方案
2021-09-15 19:24:45
Python for循环中的陷阱详解
2021-09-01 07:00:31
web脚本程序攻击的防范
2007-10-18 13:29:00
mysql数据库中字符集乱码问题原因及解决
2024-01-14 19:38:10
Web开发与JavaScript编辑利器——Aptana Studio简介
2008-05-05 13:32:00
Java正则表达式的替换和分组功能
2022-01-28 20:20:43
asp在sql server2000中新建帐号和给帐号权限代码
2008-01-29 13:46:00
实现一个完整的Node.js RESTful API的示例
2024-05-13 09:35:35
详解Python中for循环是如何工作的
2021-07-04 17:41:40
在Ubuntu/Linux环境下使用MySQL开放/修改3306端口和开放访问权限
2024-01-14 00:47:02
Python 语句的表达式和缩进
2023-11-26 18:28:24
Dreamweaver小技巧:超高速下载图像
2009-07-14 21:59:00
Python实现异步IO的示例
2021-01-11 13:25:38