邮件传输

电子邮件传输的基本流程:

假设我的电子邮箱地址是Jack@163.com,对方的;邮箱地址为Rose@sina.com

我使用outlook或者foxmail之类的软件发邮件时,这些软件被称为MUA(Mail  User  Agent)-邮件用户代理

邮件发送到MTA(Mail Transfer Agent)-邮件传输代理,这个由使用的email服务提供商决定,

我使用的是网易邮箱,所以邮件到达网易的MTA,然后网易的MTA将邮件再转发给新浪的MTA

最后再到新浪的MDA(Mail Delivery Agent)-邮件投递代理,然后邮件就静静的躺在某个文件夹或者某个数据库里,长期保存的这

个地方就是我们的电子邮箱了


发件人 -> MUA ->MTA -> MTA ->若干个MTA->MDA <-MUA <-收件人


导入模块

# smtp simple mail transfer protocol 简单邮件传传输协议
# lib library
import smtplib
import email
# MIME 多用于邮件扩充协议
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

发送文本

# 初始化一个邮件对象,related表示内嵌资源
message = MIMEMultipart('related')
# 1. 发送的内容 内容必须是字符串
# 2. 内容的类型 文本类型默认是plain
# 3. 内容的编码方式 使用utf-8编码
message_html= MIMEText('今天是星期五,好开心','plain','utf-8')

发送图片

# 'rb' 以二进制方式读取文件,'base64'编码防止乱码
message_image = MIMEImage(open('1.jpg','rb').read(),'base64')
# 图片附件到邮件对象中
message.attach(message_image)

发送文件

message_xls = MIMEText(open('table.xls','rb').read(),'base64','utf-8')
message.attach(message_xls)

设置邮件发送信息

​# 设置邮件发送人
message['From'] = '[email protected]'
# 收件人
message['To'] = '[email protected]'
# 邮件标题
message['Subject'] = '来自python的问候'
# 传输协议证书,初始化邮件客户端
email_client = smtp.SMTP_SSL()
# MTA的域名和端口
email_client.connect(HOST,'465')
# 密码:网易邮箱第三方登陆授权码,登陆
result = email_client.login('[email protected]','授权码')
print('登陆结果',result)

发送邮件

​

# message = MIMEMultipart('related') 是一个对象,msg要求字符串

email_client.sendmail(from_addr='[email protected]',to_addrs='[email protected]',msg=message.as_string())
​

发送html且添加附件img到HTML中

message_image = MIMEImage(open('1.jpg','rb').read(),'base64')
message_image.add_header('Content-ID','small')

message_html = MIMEText('

明天是周六,我是去学习呢还是去学习呢

',"html","utf-8") message.attach(message_html)

 

你可能感兴趣的:(Python)