本文共 4239 字,大约阅读时间需要 14 分钟。
本文通过实例讲解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 smtplibfrom email.mime.text import MIMETextfrom email.header import Headerif __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 smtplibfrom email.mime.text import MIMETextfrom email.header import Headerif __name__ == "__main__": print("001:发送HTML邮件示例") # 邮件发送者 sender = "joe@163.com" # 邮件接收地址列表 # 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址 receivers = "xxx@163.com" # 发送内容构建 # text标识发送内容为文本格式 msgHTML = MIMEText("发送带有附件的邮件实例Python 发送邮件测试,正文内容如下。
CSDN博客>", "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 smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.mime.multipart import MIMEMultipartif __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