博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python发送邮件
阅读量:6165 次
发布时间:2019-06-21

本文共 2802 字,大约阅读时间需要 9 分钟。

QQ邮箱传输协议

  • SMTP:简单邮件传输协议(由源地址到目的地址的传输规则)
  • smtp.qq.com :QQ邮箱服务器
  • 默认端口:25
  • 生成第三方登录QQ邮箱的密钥,这样从第三方登录QQ邮箱,不能输入密码,只需要输入第三方密钥就行

配置邮箱授权码

需要使用到的库

  • smtplib :主要是负责发送邮件,连接邮箱服务器,登录邮箱
  • email :构造邮件,邮件显示的内容,收件人,发件人
import smtplibfrom email.mime.text import MIMEText  # 发送文本from email.mime.image import MIMEImage # 发送图片from email.mime.multipart import MIMEMultipart # 将多个对象结合起来from email.utils import formataddrfrom email.header import Header

发送邮件简单代码

sender_from = '604421385@qq.com' # 发件人邮箱sender_to='icessun@qq.com' # 收件人邮箱# 定义一个函数,接收传入的邮件主题,邮件内容为参数def send_email(eamil_subject:str,email_content:str)->int:    try:         # 构造邮件的内容  plain:表示发送的是文本;HTML:表示发送的超文本         message = MIMEText(email_content, 'plain', 'utf-8')         # 主题         message['Subject'] = Header(eamil_subject, 'utf-8')        message['From'] = formataddr(['icessun', sender_from])        message['To'] = formataddr(['604421385', sender_to])        # 构造发送邮件的对象smtp,实例化SMTP()        smtp = smtplib.SMTP()        # 连接邮箱服务器 host 和 port        smtp.connect('smtp.qq.com', 25)   # 可以简写  smtp=smtplib.SMTP('smtp.qq.com',25)        # 登陆邮箱  第二个参数是qq邮箱授权码        smtp.login(sender_from, 'xxxxxxxx')        # 发送方,接收方(可以有多个['接收地址1','接收地址2',....]),发送的消息(字符串类型,使用邮件格式)        # message.as_string() 将MIMEText对象变为str        smtp.sendmail(sender_from, sender_to, message.as_string())        # 退出邮箱,结束SMTP会话        smtp.quit()        return 0    except:        return -1

邮件发送成功

email中的 MIMEText

  • plain:表示发送的文本,基本的
# 构造邮件的内容  plain:表示发送的是文本;HTML:表示发送的超文本email_content = '这是发送的文本消息'message = MIMEText(email_content, 'plain', 'utf-8')
  • html:表示发送的超文本

发送超文本

  • base64:表示添加附件
# 打开文件所在的位置send_file=open(r'F:\password.txt').read() # 二进制文件message = MIMEText(send_file, 'base64', 'utf-8')message['Content-Type'] = 'application/octet-stream'# 内容展示的方式:attachment ,中文名字显示不成功 aaa.txt 英文才能正常显示# message['Content-Disposition'] = 'attachment;filename="aaa.txt"'message.add_header('Content-Disposition','attachment',filename='aaaa.txt')

添加附件

email中的 Header 和 formataddr

  • 发送的邮件发送方和接收方全部使用 Header;不会显示具体的发件人和收件人的邮箱地址
message['From'] = Header('python','utf-8')message['To'] = Header('参数', 'utf-8')

Header

  • 发送的邮件发送方和接收方全部使用 formataddr;显示具体的发件人和收件人的邮箱地址,和为其设置的别名
# 默认字符编码为 utf-8,第一个参数传入列表[发件人的名字,邮箱地址]message['From'] = formataddr(['hhhh', sender_from]) message['To'] = formataddr(['604421385', sender_to])

formataddr

email中的MIMEMultipart

  • mixed:邮件包含附件,向上兼容
  • related:邮件正文包含图片,声音等内嵌资源
  • alternative:邮件只是纯文本,超文本
message = MIMEMultipart('mixed')# 然后把 邮件的 Subject From To 添加到 message中message['Subject'] = Header(email_subject,'utf-8')message['From'] = formataddr(['test',sender_from])message['To'] = formataddr(['接收者',sender_to])
  • 将其他文本添加到 Multipart 中
message.attach(text_plain)   # MIMEText 对象  message.attach(text_html)    # 超文本message.attach(text_att)   # 附件message.attach(image)   # MIMEImage 对象

发送邮件的多功能代码:

  • 发送文本
  • 发送图片
  • 发送超文本
  • 发送附件

代码地址

回复:QQ邮箱 获取
回复:QQ邮箱

赏杯咖啡

转载地址:http://bquba.baihongyu.com/

你可能感兴趣的文章
Android Fragment应用实战
查看>>
SQL Server查询死锁并KILL
查看>>
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>