使用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就可以看到发送成功的消息啦!
邮件发送成功!
邮件发送成功!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。