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)