欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python之如何发送邮件

程序员文章站 2024-03-23 17:42:34
...

今天来讲一下python如何发送邮件,以163和qq邮箱为例。

要想实现使用python代码发送邮件,邮箱必须开启POP3/SMTP协议,开启之后邮箱会给你生成一个授权码

注意:这个授权码一定要记住,以后使用代码实现发送邮件登陆的时候,使用的都是这个授权码

qq邮箱的POP3/SMTP协议开启在 设置>>账户 中

python之如何发送邮件

python之如何发送邮件

163邮箱的POP3/SMTP协议开启方式

python之如何发送邮件

与qq不同的是,163邮箱开启之后需要自己设置客户端授权密码

python之如何发送邮件

python之如何发送邮件

POP3/SMTP协议开启之后开始使用python代码实现发送邮件

第一步:引入模块

# smtp  simple mail tranfer 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

第二步:设置发件信息

注意:如果发送邮件用的是qq邮箱,邮件的域名应改为qq.com

# 设置邮件的域名
HOST = 'smtp.163.com'
# 设置发件人邮箱 发件人邮箱必须设置开始smtp协议
# 设置邮件发件人
message['From'] = '发件人邮箱'
# 设置邮件收件人
message['To'] = '收件人邮箱'
# 设置邮件标题
message['Subject'] = '这个是标题'

第三步:添加邮件内容,主题,内容,附件等

related 表示使用内嵌资源的形式将邮件发送给对方

message = MIMEMultipart('related')

发送纯文本

# 参数
# 1.发送的内容 内容必须是字符串
# 2.内容的类型 文本类型默认为plain
# 3.内容的编码方式 使用utf-8进行编码
message_text = MIMEText('今天是星期六,好开心','plain','utf-8')
# 将邮件内容装入到邮件信息中去
message.attach(message_text)

 

# rb 读取二进制文件
image_data = open('图片名字加后缀','rb')
# 设置读取获取的二进制数据
message_image= MIMEImage(image_data.read())
image_data.close()
# 添加图片文件到邮件信息当中去
message.attach(message_image)
# ------------------发送图片的第二种方法
message_image = MIMEText(open('图片名字加后缀','rb').read(),'base64','utf-8')
message_image['Content-disposition'] = 'attachment;filename="新名字"'
message.attach(message_image)

发送文件

message_xlsx = MIMEText(open('要发送的文件名.xlsx','rb').read(),'base64','utf-8')
# 设置文件在附件当中的名字
message_xlsx['Content-Disposition'] = 'attachment;filename="test1.xlsx"'
message.attach(message_xlsx)

将一个xlsx文档作为内容发送到对方的邮箱读取excle文件时,是以rb形式进行读取的,是一个以二进制内容,对二进制文件需要设置默认的编码形式,对于MIMEText()来说 默认的编码形式就是base64,如果对于二进制文件来说 没有设置base64进行编码,则附件的就会呈现乱码

第三步:登录邮箱发送邮件

注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
密码千万不要写邮箱的密码,要写邮箱的授权码

# 获取简单邮件传输协议的证书
email_client = smtplib.SMTP_SSL()
# 设置发件人邮箱的域名和端口 端口为465
email_client.connect(HOST,'465')
result = email_client.login(message['From'],'授权码')
# 发送邮件
email_client.sendmail(from_addr=message['From'],to_addrs=message['To'],msg=message.as_string())
# 关闭邮件发送客户端
email_client.close()

 

相关标签: python email