转载

Python 通用邮件发送

使用到的模块 smtplib, email

代码托管位置 github-pytools(https://github.com/wklken/pytools)

需求

1.发送邮件

2.不需要登录任何邮箱等等

3.支持多接收人

4.支持附件

5.支持命令行+方法调用

基于版本

2.4

使用2.7和3.x的童鞋,可能需要修改下import信息

源代码

使用官网一份代码进行重新修改,扩增功能

代码托管地址 github-pytools

#!/usr/bin/env python #@author : wklken@yeah.ent #@version : 0.1 #@desc: for mail sending.  import smtplib import getopt import sys import os  from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase  from email.MIMEText import MIMEText import email.Encoders as encoders  def send_mail(mail_from, mail_to, subject, msg_txt, files=[]):     # Create message container - the correct MIME type is multipart/alternative.     msg = MIMEMultipart('alternative')     msg['Subject'] = subject     msg['From'] = mail_from     msg['To'] = mail_to      # Create the body of the message (a plain-text and an HTML version).     #text = msg     html = msg_txt      # Record the MIME types of both parts - text/plain and text/html.     #part1 = MIMEText(text, 'plain')     part2 = MIMEText(html, 'html')      # Attach parts into message container.     # According to RFC 2046, the last part of a multipart message, in this case     # the HTML message, is best and preferred.     #msg.attach(part1)     msg.attach(part2)      #attachment     for f in files:         #octet-stream:binary data         part = MIMEBase('application', 'octet-stream')         part.set_payload(open(f, 'rb').read())         encoders.encode_base64(part)         part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))         msg.attach(part)      # Send the message via local SMTP server.     s = smtplib.SMTP('localhost')     # sendmail function takes 3 arguments: sender's address, recipient's address     # and message to send - here it is sent as one string.      mailto_list = mail_to.strip().split(",")     if len(mailto_list) > 1:         for mailtoi in mailto_list:             s.sendmail(mail_from, mailtoi.strip(), msg.as_string())     else:         s.sendmail(mail_from, mail_to, msg.as_string())      s.quit()     return True  def main():     files = []     try:         opts, args = getopt.getopt(sys.argv[1:], "f:t:s:m:a:")         for op, value in opts:             if op == "-f":                 mail_from = value             elif op == "-t":                 mail_to = value             elif op == "-s":                 subject = value             elif op == "-m":                 msg_txt = value             elif op == "-a":                 files = value.split(",")     except getopt.GetoptError:         print(sys.argv[0] + " : params are not defined well!")      print mail_from, mail_to, subject, msg_txt     if files:         send_mail(mail_from, mail_to, subject, msg_txt, files)     else:         send_mail(mail_from, mail_to, subject, msg_txt)  if __name__ == "__main__":     main() 

使用

./sendEmail.py -f "fromSomeOne@XXX.com"              -t "toA@XXX.com,toB@XXX.com"              -s "the subject of mail"              -m "the mail Message.Main Content"              -a "attachment1_path,attachment2_path"  IMPORT:  import sendEmail sendEmail.send_mail(mail_from, mail_to, subject, msg_txt, files) 

The end!

正文到此结束
Loading...