python3实现163邮箱SMTP发送邮件

作者:微光刺眼丶 时间:2021-02-28 07:59:19 

SMTP协议

首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。

发送邮件之前的配置:

上面说了是使用SMTP协议发送的邮件,所以需要先查看你的发件人邮箱是否有开启SMTP协议,如没有,则需要开启,我测试使用的是163.com的邮箱作为发信人邮箱,在设置中开启SMTP协议如下图所示。

python3实现163邮箱SMTP发送邮件

  测试的前提是你需要开通客户端授权,开通后会让你设置密码,那个密码要记好,下面的passwd接收的是授权密码而不是邮箱密码!否则会出现下图所示的错误提示:

python3实现163邮箱SMTP发送邮件

小栗子:


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
  • asp之家 网络编程 m.aspxhome.com