发送邮件的流程
登录我们邮箱,
书写接收者的邮箱,
书写题目与内容,添加附件,
点击发送。
邮件协议
smtp 是邮件发送的协议。pop3 是邮件接收的协议。
smtplib模块用法
创建协议对象:smtpObj = smtplib.SMTP()
创建链接:smtpObj.connect(smtp服务器地址, 25)
登录验证 : smtpObj.login(mail_user, mail_pass)
发送邮件 : smtpObj.sendmail(sender, receivers, message)
message是消息对象的加密字符串
email包
MIMEText:定义邮件发送内容的对象
Header:将各类信息定义成对象,比如标题等
Python代码
首先需要获取邮箱账号的授权码
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
# config
mail_host = "smtp.sina.com" # 新浪邮箱的smtp服务器
mail_user = "******" # 邮箱用户名, 也可以写成******@sina.com
mail_pass = "******" # 邮箱授权码(在新浪邮箱设置里查看)
sender = "******@sina.com" # 发件人地址,应与 mail_user 是同一个
receivers = ['******']
'''编辑邮件内容'''
# 使用 MIMEMultipart 创建多部分邮件,允许包含文本和附件
message = MIMEMultipart()
message['From'] = Header(sender)
# message['To'] = Header(', '.join(receivers), 'utf-8')
message['Subject'] = Header('Test Subject', 'utf-8')
# 邮件正文
body = MIMEText('This is a test message with attachment.', 'plain', 'utf-8')
message.attach(body)
# 添加附件
file_path = r'A:\高清无码.mp4' # 替换为附件文件的路径
attachment_name = 'example.mp4' # 附件的文件名(相当于给附件重命名)
try:
with open(file_path, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part) # 对附件进行Base64编码
# 设置附件头部信息
part.add_header('Content-Disposition', f'attachment; filename="{attachment_name}"')
# 将附件附加到邮件
message.attach(part)
# print('[debug] ', message.as_string())
'''发送邮件'''
try:
smtp_obj = smtplib.SMTP()
smtp_obj.connect(mail_host, 25) # 连接SMTP服务器
smtp_obj.login(mail_user, mail_pass) # 登录
smtp_obj.sendmail(sender, receivers, message.as_string()) # 发送邮件
print('[info] email send successfully.')
except smtplib.SMTPException as e:
print('[Error] fail to send email: ', e)
except FileNotFoundError:
print("[Error] attachment file not found.")