发送邮件(用代码模拟邮箱服务器发送邮件)

1.导入模块和包,分别是邮件发送服务器模块、邮件对象模块、邮件标题包、邮件内容包

import smtplib      # 邮件发送服务器
from email.mime.multipart import MIMEMultipart   # 创建一个邮件对象
from email.header import Header     # 邮件标题包
from email.mime.text import MIMEText    # 邮件内容包

2.用函数封装功能:发邮件

包含:发送人、接收人、主题、内容、附件

3.添加附件时注意:

a. 将附件转成base64编码格式

b.对附件的中文件名进行gbk编码

代码如下:

# 添加邮件附件
    email.attach(content)
    if files:
        for file in files:
            with open(file, rb) as f:
                file_name = file.rfind(/)
                display_filename = file[file_name + 1:] if file_name != -1 else file
                # 将附件转成base64编码格式
                att = MIMEText(f.read(), base64, utf-8)
                # 设置附件类型 通知服务器这是附件
                att["Content-Type"] = application/octet-stream

                # 设置附件的文件名称,告诉服务器附件的文件名称 并显示在邮件中,并对附件的中中文件名gbk编码
                att.add_header(Content-Disposition, attachment,
                               filename=(gbk, , os.path.basename(display_filename)))

                # 将附件附加到 邮件对象
                email.attach(att)

4.发送邮件

5.完整代码如下:

6.将发送邮件这个函数封装起来作为一个包导入,方便今后调用

经验分享 程序员 微信小程序 职场和发展