代码分析与解释

代码是一个 Python 脚本,用于通过 SMTP 协议发送带有附件的邮件。该脚本定义了一个名为 send_email 的函数,该函数接受接收者的电子邮件地址以及可选的两个文件路径作为附件。以下是该脚本的主要步骤和组件:

  1. 导入必要的库和模块,如 smtplib 和 email 模块的多个类。

  2. 定义 send_email 函数,该函数接受接收者的电子邮件地址和两个可选的文件路径作为参数。

  3. 在 send_email 函数中,配置发送者的电子邮件地址和密码,设置邮件的主题和内容。

  4. 创建一个 MIMEMultipart 对象以构建邮件,并设置邮件的 From,To 和 Subject 头。

  5. 将邮件的正文添加到 MIMEMultipart 对象中。

  6. 如果提供了文件路径,则将文件作为附件添加到邮件中。

  7. 通过 SMTP 服务器登录并发送邮件。

  8. 在脚本的末尾,调用 send_email 函数以发送邮件。

打开网易新闻 查看更多图片

代码块

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 def send_email(receiver, file_path1=None, file_path2=None): # 邮件发送方的信息 sender = 'sanrenjz@163.com' password = 'AU46546412MN' # 邮件主题和内容 subject = 'Python自动发送邮件' content = '这是一封Python自动发送的邮件' # 创建邮件对象 message = MIMEMultipart() message['From'] = Header(sender, 'utf-8') message['To'] = Header(receiver, 'utf-8') message['Subject'] = Header(subject, 'utf-8') # 添加邮件正文 message.attach(MIMEText(content, 'plain', 'utf-8')) # 添加附件1 if file_path1 is not None: with open(file_path1, 'rb') as f: attachment = MIMEBase('application', 'octet-stream') attachment.set_payload(f.read()) encoders.encode_base64(attachment) attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_path1.split('\\')[-1])) message.attach(attachment) # 添加附件2 if file_path2 is not None: with open(file_path2, 'rb') as f: attachment = MIMEBase('application', 'octet-stream') attachment.set_payload(f.read()) encoders.encode_base64(attachment) attachment.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_path2.split('\\')[-1])) message.attach(attachment) # 发送邮件 try: smtp_obj = smtplib.SMTP('smtp.163.com', 25) smtp_obj.login(sender, password) smtp_obj.sendmail(sender, receiver, message.as_string()) print('邮件发送成功') except smtplib.SMTPException as e: print('邮件发送失败:', e) # 调用函数发送邮件 send_email('yuhadkkak@yeah.net', '全新策略.xlsx', "美股.xlsx")