用python发送邮件的基本原理

用python发送邮件的基本原理


基本步骤
  1. 引入python的标准模块,email.message.Message和smtplib。
  2. 创建一个email.message.Message实例。
  3. 添加邮件头必须有的字段,例如’From’,‘To’。
  4. 添加邮件内容。根据内容的不同,调用不同的方法。
    * 最简单的方式,调用message.set_content。
    * 最简单的方式,调用message.set_content。
    * html内容有内嵌资源内容,调用message.add_related。
    * 有附件,调用message.add_attachment。
  5. 创建一个stmplib实例。
  6. 在stmp实例里设置邮箱smtp服务器地址、账号、密码。
  7. 如果smtp服务器不在本机,登录stmp服务器,用stmplib.login。
  8. 发送邮件,调用smtp.send_message。

说明
  • 邮件体及邮件内的内容主要有3中类型。
    * multipart-alternative: 邮件体内的同级内容,根据邮箱系统的环境,只显示最优效果的一个内容。
    * multipart-related: 邮件体内的内容,显示一个主体内容,其他内容以相关的内联方式显示在主体内。一般主体是html内容,其他是要显示在html中的图片、音乐、视频。关联是通过Content-来实现。
    * multipart-mixed: 邮件体内各种内容,包括前面两种,另外还可以处理附件。
  • smtp的方式可以是普通的smtp(用smtp.SMTP),或者SSL方式(用smtp.SMTP_SSL)。
  • smtp.sendmail发送内容只能是文本的内容(编码后的二进制文件也可以);smtp.send_message发送内容可以是未编码的内容,内部处理后,会调用sendmail发送。
  • message.set_content,message.add_alternative,message.add_related,message.add_attachment的内核会调用email.contentmanager.set_content。根据邮件内容的不同,需要的参数也有不同,具体参考官方文档,content manager instance
  • 邮件的编码有两种,1)based64编码 2)QP编码。
  • 邮件体内容可以无限嵌套,邮件体内也可以是另一个邮件,会以附件的eml格式呈现。

示例
import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = 'use EmailMessage'
msg['From'] = 'aipython@gmailx.com'
msg['To'] = 'datadriver'

msg.set_content('a email test useing Emailmessage.')

s = smtplib.SMTP('smtp.gmailx.com')
s.set_debuglevel(1)
s.login('aipython', 'Iq349nGkPjWHFpz3')
s.sendmail('datadriver@gmailx.com', msg.as_string())
s.quit()

邮件结构的图示

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值