Python 发送SMTP邮件的简单教程

2021-09-18 0 364

一、两个模块

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()

以上就是Python 发送SMTP邮件的简单教程的详细内容,更多关于Python 发送邮件的资料请关注自学编程网其它相关文章!

遇见资源网 Python Python 发送SMTP邮件的简单教程 http://www.ox520.com/29206.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务