Python 发送SMTP邮件的简单教程

作者:Captain_Li 时间:2021-04-27 00:26:51 

目录
  • 一、两个模块

  • 二、SMTP端口

  • 三、四大步骤

    • 1、构造邮件内容

    • 2、连接邮件服务器

    • 3、登陆邮件服务器

    • 4、发送邮件

  • 四、常用场景

    • 1、纯文本邮件

    • 2、发送html文本

    • 3、发送附件

一、两个模块

Python使用SMTP发送邮件的两个模块:smtplib模块、email模块。

  • smtplib:负责发送邮件

  • email:负责构建邮件

二、SMTP端口

1)未加密端口,smtplib.SMTP接口,端口:25
2)使用SSL加密,smtplib.SMTP_SSL接口,端口:465
3)使用TLS加密,端口:587 

三、四大步骤

1、构造邮件内容


# 纯文本
msg = MIMEText(content)

# 附件
msg = MIMEMultipart()

2、连接邮件服务器


s = smtplib.SMTP("smtp.qq.com", 25)

3、登陆邮件服务器


s.login(msg_from, passwd)

msg_from:指发送者的邮箱

passwd:指发送者的密码,这个密码不是你的QQ登陆密码,而是你在QQ邮箱设置开启SMTP之后的一个授权码

Python 发送SMTP邮件的简单教程

4、发送邮件


s.sendmail(msg_from, msg_to, msg.as_string())

msg_from:发送方
msg_to:收件方
msg.as_string():要发送的消息

四、常用场景

1、纯文本邮件


import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发送者
msg_from = "xxxxx@qq.com"

# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxxx"

# 接受者
msg_to = "xxxx@qq.com"

# 邮件文本
content = 'Python 邮件发送测试...'

# 邮件主题
subject = "test"

# 生成一个MIMEText对象(还有一些其它参数)
msg = MIMEText(content)

# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')

# 放入发件人
msg['From'] = msg_from

try:
   # 连接邮件服务器
   s = smtplib.SMTP("smtp.qq.com", 25)

# 登录到邮箱
   s.login(msg_from, passwd)

# 发送邮件:发送方,收件方,要发送的消息
   s.sendmail(msg_from, msg_to, msg.as_string())
   print('成功')
except s.SMTPException as e:
   print(e)
finally:
   s.quit()

2、发送html文本


import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发送者
msg_from = "xxxx@qq.com"

# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"

# 接受者
msg_to = "xxxx@qq.com"

# 邮件文本
content = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com" rel="external nofollow" >这是一个链接</a></p>
"""

# 邮件主题
subject = "test"

# 生成一个MIMEText对象(
msg = MIMEText(content, 'html', 'utf-8')

# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')

# 放入发件人
msg['From'] = msg_from

try:
   # 连接邮件服务器
   s = smtplib.SMTP("smtp.qq.com", 25)

# 登录到邮箱
   s.login(msg_from, passwd)

# 发送邮件:发送方,收件方,要发送的消息
   s.sendmail(msg_from, msg_to, msg.as_string())
   print('成功')
except s.SMTPException as e:
   print(e)
finally:
   s.quit()

3、发送附件


import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 发送者
msg_from = "xxxx@qq.com"

# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"

# 接受者
msg_to = "xxxx@qq.com"

# 邮件主题
subject = "test"

# 生成一个MIMEMultipart对象(
msg = message = MIMEMultipart()

# 邮件文本
message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))

# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')

# 放入发件人
msg['From'] = msg_from

# 添加附件
att1 = MIMEText(open('./wordcloud_singer.py', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
msg.attach(att1)

try:
   # 连接邮件服务器
   s = smtplib.SMTP("smtp.qq.com", 25)

# 登录到邮箱
   s.login(msg_from, passwd)

# 发送邮件:发送方,收件方,要发送的消息
   s.sendmail(msg_from, msg_to, msg.as_string())
   print('成功')
except s.SMTPException as e:
   print(e)
finally:
   s.quit()

来源:https://www.cnblogs.com/lemon-le/p/14858267.html

标签:python,发送邮件,SMTP
0
投稿

猜你喜欢

  • PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题

    2023-08-12 09:14:28
  • 如何调试 XMLHttpRequest

    2008-08-15 13:59:00
  • PHP获取当前相对于域名目录的方法

    2023-08-19 18:47:31
  • Oracle 日期的一些简单使用

    2009-08-05 20:42:00
  • JavaScript获取时区实现过程解析

    2023-08-22 20:58:34
  • oracle 数据库连接分析

    2009-07-28 10:42:00
  • 用Oracle并行查询发挥多CPU的威力

    2010-07-23 12:52:00
  • macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    2023-11-15 13:05:39
  • asp上传文件自动重命名方法

    2007-08-24 09:46:00
  • python文件选择对话框的操作方法

    2023-08-02 16:27:21
  • js截取字符串的方法

    2008-04-20 17:06:00
  • 高效率的GetRows()的使用方法

    2008-09-23 18:29:00
  • python 百度aip实现文字识别的实现示例

    2023-12-15 19:53:47
  • Oracle 10g的DBA无法登录解决方案

    2009-05-24 19:38:00
  • 再说淘宝的评价和信用机制

    2008-07-10 12:43:00
  • ASP程序开发注意的安全事项

    2010-05-03 10:55:00
  • CSS阴影详解

    2009-12-04 18:31:00
  • 软件与网站设计的区别

    2009-05-04 14:30:00
  • Go语言程序查看和诊断工具详解

    2023-06-22 02:40:38
  • 基于Python实现文件的压缩与解压缩

    2023-12-24 09:07:58
  • asp之家 网络编程 m.aspxhome.com