Skip to content
py
import sys, smtplib,yaml
from email.mime.text import MIMEText


with open('/etc/script/mail/account.yml', 'r') as file: 
    accounts = yaml.safe_load(file)
senders = accounts["sender"]
recipients = accounts["receiver"]

# 设置默认信息
subject = "测试邮件"
body = "这是一封测试邮件,由Python脚本发送。"
sender_name = next(iter(accounts["sender"]))
recipient_name = next(iter(accounts["receiver"]))


try:
    subject = sys.argv[1]
    body = sys.argv[2]
    recipient = sys.argv[3]
    sender = sys.argv[4]

    if sender != '':
        sender_name = sender
    if recipient != '':
        recipient_name = recipient
except:
    pass


sender = senders[sender_name]["addr"]
password = senders[sender_name]["pwd"]
server = senders[sender_name]["server"]
port = senders[sender_name]["port"]
recipient = recipients[recipient_name]["addr"]

print(f"subject={subject}, body={body}, recipient={recipient}, sender={sender}")


def send_email(sender, password, smtp_server, smtp_port, recipient, subject, body):
    """
    发送邮件函数

    Args:
        sender: 发件人邮箱地址
        password: 授权码
        smtp_server: SMTP服务器地址
        smtp_port: SMTP服务器端口
        subject: 邮件主题
        body: 邮件正文
    """

    message = MIMEText(body)
    message["From"] = sender
    message["To"] = recipient
    message["Subject"] = subject

    with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
        server.login(sender, password)
        server.sendmail(sender, recipient, message.as_string())
        server.quit()


if __name__ == "__main__":
    # # 示例用法
    # sender = "用户@qq.com"
    # password = "x"
    # smtp_server = "smtp.qq.com"  # 替换为你的SMTP服务器
    # smtp_port = 465  # 常见SMTP端口,如Gmail为465
    # recipient = sender
    # subject = "测试邮件"
    # body = "这是一封测试邮件,由Python脚本发送。"

    send_email(sender, password, server, port, recipient, subject, body)