Python發送郵件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: guojing
# Date: 2014-10-23
# Purpose: 發送郵件

'''
發送郵件
Parameters:主題、接受者(多個用','分割)、抄送(多個用','分割)、內容(能夠是文件)、附件(多個用','分割)
'''

__author__ = 'guojing'

import email,sys,os
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEImage import MIMEImage

SENDER = 'username@****.com'
SMTPSERVER = 'smtpcloud.sohu.com'
#RECEIVERS = ''
USERNAME = 'username@****.com'
APIKEY = '******'

def sendMail(subject, receivers, cc, content, atts):
    msg = MIMEMultipart('related')
    msg['Subject'] = unicode(subject, "UTF-8")
    msg['From'] = SENDER
    msg['To'] = receivers
    msg['Cc'] = cc
    
    #郵件內容
    if os.path.isfile(content):
        if(content.split('.')[-1]=='html'):
            cont = MIMEText(open(content).read(),'html','utf-8')
        else:
            cont = MIMEText(open(content).read(),'plain','utf-8')
    else:
        cont = MIMEText(content, 'plain','utf-8')
    msg.attach(cont)
    
    #構造附件
    if atts != -1 and atts != '':
        for att in atts.split(','):
            os.path.isfile(att)
            name = os.path.basename(att)
            att = MIMEText(open(att).read(), 'base64', 'utf-8')
            att["Content-Type"] = 'application/octet-stream'
            #將編碼方式爲utf-8的name,轉碼爲unicode,而後再轉成gbk(不然,附件帶中文名的話會出現亂碼)
            att["Content-Disposition"] = 'attachment; filename=%s' % name.decode('utf-8').encode('gbk')
            msg.attach(att)

    smtp = smtplib.SMTP()
    smtp.connect(SMTPSERVER)
    smtp.login(USERNAME, APIKEY)
    for recev in receivers.split(','):
        smtp.sendmail(SENDER,recev, msg.as_string())
    for c in cc.split(','):
        smtp.sendmail(SENDER,c, msg.as_string())
    smtp.quit()

def main():
    print "start send mail[sendmail.py]"
    subject = sys.argv[1]
    receivers = sys.argv[2]
    #cc = sys.argv[3]
    leng = len(sys.argv)
    if leng == 3:
        cc = ""
        content = ""
        atts = -1
    elif leng == 4:
        print "The parameters is not currect!"
        sys.exit(0)
    elif leng == 5:
        cc = sys.argv[3]
        content = sys.argv[4]
        atts = -1
    elif leng == 6:
        cc = sys.argv[3]
        content = sys.argv[4]
        atts = sys.argv[5]
    sendMail(subject, receivers, cc, content, atts)
    print "finish send mail[sendmail.py]"

if __name__=='__main__':
    main()

參考: http://blog.csdn.net/betry/article/details/6657429html

相關文章
相關標籤/搜索