(python)发邮件

目录

前言

模块

代码示例

范例一 发送信息

范例二 发送附件


前言

        日常办公,离不开邮箱的使用.

        对于一些重要的程序运行,需要运维时时刻刻去关注它运行的状态,监控服务器、网络设备、存储设备等基础设施的运行状态,包括硬件健康状态、负载情况、带宽使用、存储空间等。当监控指标超过阈值或发生异常时,及时通过邮件发送告警通知给运维人员。

模块

模块介绍
模块名称 作用 操作
smtplib 发送电子邮件 连接到SMTP服务器、发送邮件、处理身份验证和错误处理等
email 进行电子邮件的创建、发送和解析操作

1.连接到SMTP服务器、发送邮件、处理身份验证和错误处理等

2.解析接收到的电子邮件消息,并提取其中的各个部分,如发件人、收件人、主题、正文和附件等。

3.处理HTML格式的邮件、处理多种编码方式的文本、处理邮件头部信息等。

代码示例

范例一 发送信息

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮件内容
msg = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
msg['From'] = Header('发件人', 'utf-8')
msg['To'] = Header('收件人', 'utf-8')
msg['Subject'] = Header('邮件主题', 'utf-8')

# 发送邮件
try:
    smtp_obj = smtplib.SMTP('smtp.example.com', 25)  # 设置 SMTP 服务器地址和端口号
    smtp_obj.login('发件人邮箱', '密码')  # 登录邮箱账号和密码
    smtp_obj.sendmail('发件人', '收件人', msg.as_string())  # 发送邮件
    smtp_obj.quit() # 断开连接
    print("邮件发送成功")
except Exception as e:
    print("邮件发送失败:", str(e))

范例二 发送附件

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服务器地址和端口
smtp_server = 'your_smtp_server'
smtp_port = 587

# 发件人和收件人
sender_email = '[email protected]'
receiver_email = '[email protected]'

# 构建邮件对象
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = 'Python Email with Attachment'

# 邮件正文
body = 'This is the body of the email.'
message.attach(MIMEText(body, 'plain'))

# 附件路径和文件名
filenames = ['xxx/attachment.pdf']


# 读取附件文件并添加到邮件对象中
for tmp in filenames:
    base_name = os.path.basename(tmp)
    with open(tmp, 'rb') as f:
        attachfiles = MIMEApplication(f.read())
        attachfiles.add_header('Content-Disposition', 'attachment', filename=base_name)
        message.attach(attachfiles)

# 连接SMTP服务器并发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    if server.verify(sender_email):
        print(f"发送者有效")

    if server.verify(receiver_email):
        print(f"接受者有效")

    # starttls 加密连接, 无加密连接可忽略
    server.starttls()
    server.login(sender_email, 'your_password')
    server.send_message(message)

你可能感兴趣的:(python,开发语言)