python2 群发 html 或文本邮件

# -*- coding: utf-8 -*-
import smtplib  
import time
import sys
from email.mime.text import MIMEText

if len(sys.argv) != 6:
    print "Usage: 1.sender 2.'recv1,recv2' 3.htmlFile 4.mailTitle 5.html|plain"
    sys.exit(1)
    # python send_mail.py "mail_feedback" "user1,user2,user3" weibo.html "反馈汇总 " html

senderName = sys.argv[1]
receiverList = sys.argv[2]
sendFile = sys.argv[3]
mailTitle = sys.argv[4]
mailFormat = sys.argv[5]

mailto_list = receiverList.split(",")
mail_host = "192.168.1.27"                 #设置服务器, 一般为smtp服务器,如smtp.qq.com
mail_user = senderName + "@163.com"        #用户名
txt_content = open(sendFile).read()

def send_mail(to_list, sub, content):             #to_list:收件人;sub:主题;content:邮件内容
    me = senderName + "<" + mail_user + ">"        #这里的 senderName 可以任意设置,收到信后,将按照设置显示
    msg = MIMEText(content, _subtype = mailFormat, _charset = 'utf-8')    #创建一个实例,这里设置为html格式邮件
    msg['Subject'] = mailTitle + time.strftime('%Y-%m-%d %H:%M', time.localtime(time.time()))    #设置主题
    msg['From'] = me  
    msg['To'] = ";".join(to_list)  
    try:  
        s = smtplib.SMTP()  
        s.connect(mail_host)                       #连接smtp服务器
        #s.login(mail_user,mail_pass)              #登陆服务器
        s.sendmail(me, to_list, msg.as_string())  #发送邮件
        s.close()  
        return True  
    except Exception, e:  
        print str(e)  
        return False  
if __name__ == '__main__':  
    if send_mail(mailto_list, "hello", txt_content):  
        print "------------->>: successful!"  
    else:  
        print "-------------XX: fail!"

————————————————————————————————————————————

#coding:utf-8
from writeLog import *
import urllib2
import smtplib
import datetime
import re, sys

from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
from email.Utils import COMMASPACE, formatdate

reload(sys)
sys.setdefaultencoding('utf-8')

def sendMailHtml(title, date, logData, receviers):
    msg = MIMEMultipart('alternative')
    msg['Subject'] = (title + '【%s】' % date).decode('utf-8')

    msg['From'] = '[email protected]'
    msg['To'] = COMMASPACE.join(receviers)
    msg['Date'] = formatdate(localtime=True)

    msg.attach(MIMEText(logData, 'html', 'utf-8'))

    smtp = smtplib.SMTP()
    smtp.connect("smtp.exmail.qq.com", "25")
    smtp.login('[email protected]', 'passwd')
    if (len(msg.as_string()) > 0):
        smtp.sendmail('[email protected]', receviers, msg.as_string())
    smtp.close()


def sendMailAtt(title, date, logData, receviers):
    #创建一个带附件的实例
    msg = MIMEMultipart()

    #构造附件
    att = MIMEText(logData, 'base64', 'utf-8')
    att["Content-Type"] = 'application/octet-stream'
    att["Content-Disposition"] = 'attachment; filename=' + infoLogName.split("/")[-1]
    msg.attach(att)

    #加邮件头
    msg['Subject'] = (title + '【%s】' % date).decode('utf-8')
    msg['From'] = '[email protected]'
    msg['To'] = COMMASPACE.join(receviers)
    msg['Date'] = formatdate(localtime=True)

    #发送邮件
    smtp = smtplib.SMTP()
    smtp.connect("smtp.exmail.qq.com", "25")
    smtp.login('[email protected]', 'passwd')
    if (len(msg.as_string()) > 0):
        smtp.sendmail('[email protected]', receviers, msg.as_string())
    smtp.close()


if __name__ == '__main__':
    dateTime = datetime.date.today() - datetime.timedelta(days=0)
    strDate = str(dateTime.strftime('%Y-%m-%d'))
    print strDate
    try:
        receivers = ['[email protected]']
        logData = os.popen("sort -t$'\t' -k2n " + infoLogName).read()
        sendMailAtt('你的邮件名 - ', strDate, logData, receivers)
        errorLogger.info("------------>> send success...")
    except Exception, e:
        errorLogger.info("--------" + str(e))


Refer:

[1] Python 发送邮件可以添加附件

http://www.oschina.net/code/snippet_221343_49994

你可能感兴趣的:(python2 群发 html 或文本邮件)