您的位置:首页 > 编程语言 > Python开发

Python之SMTP发送邮件

2017-07-12 10:52 591 查看
本文通过实例讲解smtplib的使用,主要介绍进行文本格式、HTML格式和带附件的邮件发送。

1、导入模块


import smtplib

2、创建对象

smtp = smtplib.SMTP([host [, port [, localhost]]] )

# 参数说明

# host: smtp服务地址,例如126邮箱的是:smtp.126.com

# port: smtp服务端口

# localhost: 如果你的smtp服务在本机,则只需指定localhost即可

3、发送邮件函数

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

# 参数说明

# from_addr: 邮件发送地址

# to_addrs: 邮件接收地址列表

# msg: 邮件内容

# mail_options, rcpt_options  可选参数,暂时不需要了解

发送文本邮件实例

# -*- coding:utf-8 -*-

__author__ = 'joe'
import smtplib
from email.mime.text import MIMEText
from email.header import Header

if __name__ == "__main__":
print("001:发送文本邮件示例")

# 邮件发送者
sender = "joe@163.com"

# 邮件接收地址列表
# 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址
receivers = "xxx@163.com"

# 发送内容构建
# text标识发送内容为文本格式
msgTEXT = MIMEText("Python 发送邮件测试,正文内容如下。", "plain", "utf-8")

msgTEXT["From"] = "joe@163.com"
msgTEXT["To"] = receivers

# 构建邮件标题
msgTEXT["Subject"] = Header("Python 发送文本邮件标题", "utf-8")

# smtp服务
smtpserver = "smtp.163.com"
smtpport = 25

# 发送人邮件用户名或专用于smtp账户用户名
username = "joe@163.com"

# 发送人邮件密码或专用于smtp账户的密码
password = "521521"

# 构建smtp对象
smtp = smtplib.SMTP()

# 连接到smtp服务
con = smtp.connect(smtpserver, smtpport)
print("002:连接结果: ", con)

# 登录smtp服务
login = smtp.login(username, password)
print("003:登录结果:", login)

# 发送邮件
print(receivers)
#发送文本格式的邮件
res = smtp.sendmail(sender, receivers, msgTEXT.as_string())
print("004:邮件发送结果: ", res)

# 退出
smtp.quit()
print("005:send email finish")


发送HTML邮件实例


# -*- coding:utf-8 -*-

__author__ = 'joe'
import smtplib
from email.mime.text import MIMEText
from email.header import Header

if __name__ == "__main__":
print("001:发送HTML邮件示例")

# 邮件发送者
sender = "joe@163.com"

# 邮件接收地址列表
# 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址
receivers = "xxx@163.com"

# 发送内容构建
# text标识发送内容为文本格式
msgHTML = MIMEText("<p>Python 发送邮件测试,正文内容如下。</p><a href='http://blog.csdn.net/shandong_chu'>CSDN博客</a>>",
"html",
"utf-8")

msgHTML["From"] = "joe@163.com"
msgHTML["To"] = receivers

# 构建邮件标题
msgHTML["Subject"] = Header("Python 发送HTML邮件标题", "utf-8")

# smtp服务
smtpserver = "smtp.163.com"
smtpport = 25

# 发送人邮件用户名或专用于smtp账户用户名
username = "joe@163.com"

# 发送人邮件密码或专用于smtp账户的密码
password = "521521"

# 构建smtp对象
smtp = smtplib.SMTP()

# 连接到smtp服务
con = smtp.connect(smtpserver, smtpport)
print("002:连接结果: ", con)

# 登录smtp服务
login = smtp.login(username, password)
print("003:登录结果:", login)

# 发送邮件
print(receivers)
#发送HTML格式的邮件
res = smtp.sendmail(sender, receivers, msgHTML.as_string())
print("004:邮件发送结果: ", res)

# 退出
smtp.quit()
print("005:send email finish")

发送带有附件的邮件实例
# -*- coding:utf-8 -*-
__author__ = 'joe'
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart

if __name__ == "__main__":
print("001:发送带有附件的邮件示例")

# 邮件发送者
sender = "joe@163.com"

# 邮件接收地址列表
# 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址
receivers = "XXX@163.com"

# 发送内容构建
# text标识发送内容为文本格式
msgHTML = MIMEMultipart()
msgHTML["From"] = "joe@163.com"
msgHTML["To"] = receivers

# 构建邮件标题
msgHTML["Subject"] = Header("Python 发送附件邮件标题", "utf-8")

# 构建邮件正文内容
msgHTML.attach(MIMEText("Python 发送邮件测试,带有附件", "plain", "utf-8"))
# 构造附件,多个附件同理,本例中附件是和脚本放在同一个目录下

attach1 = MIMEText(open("test_mail.py", 'rb').read(), "base64", "utf-8")
attach1["Content-Type"] = "application/octet-stream"

# 这里filename即附件的显示名字,将会在邮件中显示
attach1["Content-Disposition"] = "attrachment;filename=code.py"

# 关联附件到邮件中
msgHTML.attach(attach1)

# smtp服务
smtpserver = "smtp.163.com"
smtpport = 25

# 发送人邮件用户名或专用于smtp账户用户名
username = "joe@163.com"

# 发送人邮件密码或专用于smtp账户的密码
password = "521521"

# 构建smtp对象
smtp = smtplib.SMTP()

# 连接到smtp服务
con = smtp.connect(smtpserver, smtpport)
print("002:连接结果 ",con)

# 登录smtp服务
log = smtp.login(username, password)
print("003:登录结果 " ,log)

# 发送邮件
print(receivers)
#发送HTML格式的邮件
res = smtp.sendmail(sender, receivers, msgHTML.as_string())
print("邮件发送结果: ",res)

# 退出
smtp.quit()
print("005:send email finish")


总结:

1、构建文本和html格式的邮件使用MIMEText构建,使用plain标识文本内容格式,使用html标识html内容格式

2、对于附件格式则需使用MIMEMultipart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: