Python的邮件发送

Python的邮件发送

实现邮件发送功能,则需要smtplib和email两个模块。

smtplib模块主要和smtp邮件服务器进行交互,如登录、退出、发送邮件等。

email模块主要封装邮件消息,如普通邮件、HTML邮件、图片邮件或附件邮件等。

一、smtplib模块

Python中主要通过smtplib模块实现邮件的发送,通过它可以连接smtp邮件服务器。

1.1 导包

import smtplib

1.2 创建smtp对象

创建smtp有两种方式,即安全性和非安全性。类似于HTTP和HTTPs两种协议。

1.2.1 普通方式
smtp = smtplib.SMTP("smtp.aliyun.com", 25)     # 创建非安全的smtp对象,普通方式
1.2.2 安全方式
smtp = smtplib.SMTP_SSL("smtp.aliyun.com",465) # 创建安全的smtp对象,依赖smtp服务器的安全配置

1.3 Debug模式

在smtp进行不同操作时,可以开启debug模式,显示与服务器交互的报文信息:

# 设置debug级别,如果为True或1表示开启debug模式
smtp.set_debuglevel(True)  

1.4 登录操作

smtp在发送邮件之间,必须先登录。

# 登录邮件服务器, username是账号,pwd是口令,在部分SMTP服务器是授权码。
smtp.login(username,pwd)   

1.5 发送邮件

# 发送邮件
# from是发送邮件的email
# to是接收人的email,可以是多个,使用()或[]
# message 是邮件的内容,需要email模块的相关MIME类封装
smtp.sendmail(from,to, message) 

1.6 退出登录

邮件发送成功后,可以登录服务器登录。

smtp.quit()

二、email模块

2.1 普通邮件

2.1.1 导包
from email.mime.text import MIMEText
from email.header import Header
2.1.2 封装文本邮件
# 发送文本信息
message = MIMEText("您申请的Python学习资源已发送,请查收,谢谢!","plain","utf-8")
message["From"] = Header("Disen教育服务中心","utf-8")
message["To"] = Header("VIP用户","utf-8")
message["Subject"] = Header("申请Python学习资源","utf-8")
2.1.3 发送邮件
smtp.sendmail(sender,["610039018@qq.com"], message.as_string())

2.2 HTML邮件

2.2.1 封装邮件
html_msg = '''
<p>Python邮件发送测试...</p>
<p><a href="http://www.qfedu.com">千锋教育</a></p>
'''

message = MIMEText(html_msg,"html","utf-8")
message["From"] = Header("千锋教育","utf-8")
message["To"] = Header("VIP高级客户","utf-8")

message["Subject"] = Header("助力学习", "utf-8")
2.2.2 发送邮件
smtp.sendmail(sender,receivers,message.as_string())

2.3 图片邮件

2.3.1 导包
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
2.3.2 封装邮件
msgRoot = MIMEMultipart("related")  # related 表示内嵌资源的邮件体
msgRoot["From"] = Header("Disen","utf-8")
msgRoot["To"] = Header("VIP用户","utf-8")
msgRoot["Subject"] = Header("年度最优学生奖","utf-8")

msgAlternative = MIMEMultipart("alternative")  # alternative选择性邮件体
msgRoot.attach(msgAlternative)

mail_msg = """
<p style="font-size:20pt">Disen教育平台</p>
<p>恭喜您,成为2018年度最佳优秀学员奖<p>
<p>详情请点击 <a href="www.codingke.com"> 查看</a><p>
<p>如图所示:<p>
<p> <img src="cid:image1"> </p>
"""

msgAlternative.attach(MIMEText(mail_msg,"html","utf-8"))

imgFile = open("mm6.jpg","rb")
msgImage = MIMEImage(imgFile.read()) # 创建图片邮件体
imgFile.close()

# 定义图片的Content-ID, 此ID在 html中引入了
msgImage.add_header("Content-ID","<image1>")
msgRoot.attach(msgImage)
2.3.3 发送邮件
smtp.sendmail(sender,receivers, msgRoot.as_string())

2.4 附件邮件

2.4.1 封装邮件
# 创建带附件的实例
message = MIMEMultipart()
message["From"] = Header("Disen","utf-8")
message["To"] = Header("VIP用户","utf-8")
message["Subject"] = Header("在线学习卡", "utf-8")

# 邮件正文
message.attach(MIMEText("您好,您申请的5000元的学习卡已通过快递的方式发送了,感谢您的使用,祝早日学有所成!", "plain", "utf-8"))

# 构造附件(Attachment)1
att1 = MIMEText(open("send_mail.py","rb").read(),"base64","utf-8")
att1["Content-Type"] = "application/octet-stream"  # 设置附件1的数据类型为八位字节流

# 设置附件的文件名信息
att1["Content-Disposition"] = "attachment;filename='send_mail.py'"

message.attach(att1)from email.mime.multipart import MIMEMultipart
2.4.2 发送邮件
smtp.sendmail(sender,receivers,message.as_string())
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值