#!/usr/bin/python3 # 脚本接收两个及以上的参数 # 第一个参数:邮件主题 # 第二个参数:邮件文本内容 # 其他参数:邮件附件 from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart import smtplib import sys # Mail basic information mail_host = "smtp.163.com" from_mail = 'xgdfmf@163.com' from_mail_password = 'PSIKFDYLMGBPSEPJ' receiver_to = ['mffan0922@163.com'] receiver_cc = [] to_mail = receiver_to + receiver_cc # MIMEMultipart: mixed/alternative/related # (1)mixed: default option, especially situation with mail attachments must use this one # (2)alternative: with both plain text and hyper text in mail content, using this one # (3)related:sending content of html format, probably using picture as the background of mail # content, then html text will be stored in alternative segment, whereas the background picture # will be stored in multipart/related segment # Mail content msg = MIMEMultipart() msg['From'] = from_mail msg['To'] = ";".join(to_mail) msg['Subject'] = sys.argv[1] txt = sys.argv[2] body = MIMEText(txt, 'plain', 'utf-8') msg.attach(body) # Mail attachment if len(sys.argv) > 3: for attachment in sys.argv[3:]: filename = attachment.split('/')[-1] attach_file = open(attachment, 'r').read() attach = MIMEText(str(attach_file), 'base64', 'utf-8') attach["Content-Type"] = 'application/octet-stream' attach.add_header('Content-Disposition', 'attachment', filename=filename) msg.attach(attach) try: server = smtplib.SMTP(mail_host) server.docmd('helo', from_mail) server.starttls() server.login(from_mail, from_mail_password) server.sendmail(from_mail, to_mail, msg.as_string()) server.quit() print('sendemail successful!') except Exception as err: print('Sending email failed, the reason is as below:') print(err)