使用python来发送附件邮件

在工作中有时候碰到需要定时发送日志信息,要怎么实现呢?下面直接上代码

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# 配置信息
SMTP_SERVER = "mail.cnbugs.com"  # SMTP服务器(如 smtp.qq.com/smtp.gmail.com)
SMTP_PORT = 587                   # 端口(TLS用587,SSL用465)
SENDER = "admin@cnbugs.com"  # 发件邮箱
PASSWORD = "xxxxxxxx"        # 密码或授权码
RECIPIENTS = ["xxxxx@qq.com", "xxxxx@qq.com"]  # 收件邮箱
# 创建邮件对象(支持附件)
message = MIMEMultipart()
message["Subject"] = "这里是主题"
message["From"] = SENDER
# 遍历接收者邮箱信息
for RECIPIENT in RECIPIENTS:
  message["To"] = RECIPIENT
  # 1. 添加邮件正文(文本内容)
  body = "这里是正文"
  message.attach(MIMEText(body, "plain", "utf-8"))
  # 2. 添加附件
  file_path = "/root/c01.txt"  # 替换为你的附件路径
  filename = file_path.split("/")[-1]  # 提取文件名
  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= {filename}",  # 指定文件名
      )
      message.attach(part)  # 将附件添加到邮件
  # 3. 发送邮件
  try:
      with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
          server.starttls()  # 启用TLS加密
          server.login(SENDER, PASSWORD)
          server.sendmail(SENDER, [RECIPIENT], message.as_string())
      print("邮件发送成功!")
  except Exception as e:
      print(f"发送失败: {e}")

运行python3 xxx.py就可以看到发送成功的消息啦!

邮件发送成功!
邮件发送成功!

发表回复

后才能评论