1. 程式人生 > >python郵件自動傳送

python郵件自動傳送

# -*- coding: UTF-8 -*-

# 如何新增附件
import os


import smtplib
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
os.chdir("C:\\Users\\h****m\\Desktop\\Auto_email")


def sendmail(subject,msg,toaddrs,fromaddr,smtpaddr,password):
    '''
    @subject:郵件主題
    @msg:郵件內容
    @toaddrs:收信人的郵箱地址
    @fromaddr:發信人的郵箱地址
    @smtpaddr:smtp服務地址,可以在郵箱看,比如163郵箱為smtp.163.com
    @password:發信人的郵箱密碼
    '''


    mail_msg = MIMEMultipart()
    if not isinstance(subject,unicode): #過濾或者不過濾貌似沒啥影響
        subject = unicode(subject, 'utf-8')
    mail_msg['Subject'] = subject
    mail_msg['From'] =fromaddr
    mail_msg['To'] = ','.join(toaddrs)
    #mail_msg.attach(MIMEText(msg, 'plain', 'utf-8')) #f傳送文字檔案
    mail_msg.attach(MIMEText(msg, 'html', 'utf-8')) #傳送html格式郵件
    
    #構造附件1
    att1=MIMEText(open("test_file1.txt",'rb').read(),'base64','utf-8')  #注意:直接讀取中文檔名會報錯   
    att1["Content-Type"] = 'application/octet-stream'
    att1["Content-Disposition"] = 'attachment; filename="test_file1.txt"'
    mail_msg.attach(att1)
    
    
    #構造附件2:新增中文附件名
    att2=MIMEText(open(u'測試檔案2.docx','rb').read(),'base64','utf-8')
    att2["Content-Type"] = 'application/octet-stream'
    att2["Content-Disposition"] = 'attachment; filename="test_file2.docx"'
    mail_msg.attach(att2)
    
    try:
        s = smtplib.SMTP()
        s.connect(smtpaddr)  #連線smtp伺服器
        s.login(fromaddr,password)  #登入郵箱
        s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) #傳送郵件
        s.quit()
        print "郵件傳送成功!"
    except Exception,e:
       print "Error: unable to send email"
       print traceback.format_exc()


if __name__ == '__main__':
    fromaddr = "h****
[email protected]
"
    smtpaddr = "smtp.126.com"
    toaddrs = ["83****[email protected]","h****[email protected]"]
    subject = "Hello,我是郵件主題"
    password = "不能告訴你"
    #msg = "Hello,我是郵件內容 !!!"
    msg="""
    <p>Python 郵件傳送測試...</p>
    <p><a href="http://www.runoob.com">這是一個連結</a></p>
    """
    sendmail(subject,msg,toaddrs,fromaddr,smtpaddr,password)