2017-05-10 21 views
0

pythonスクリプトを使用してメールを送信しようとしています。私はそれが働いている添付ファイルなしで試みた。添付ファイル付きメールを送信するPythonスクリプトアサーションエラー

アタッチメントを試しましたが、アサーションエラーが発生しました。以下は

コードです:私は取得しています

import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEBase import MIMEBase 
from email.MIMEText import MIMEText 
from email.Utils import COMMASPACE, formatdate 
from email import Encoders 
import os 
import time 
import random 
msg_from = "[email protected]" 
to = "[email protected]" 
text = "test-Hello" 
subject = "Test" 
f = "output1.pdf" 

def generate_message_id(msg_from): 
    domain = msg_from.split("@")[1] 
    r = "%s.%s" % (time.time(), random.randint(0, 100)) 
    mid = "<%[email protected]%s>" % (r, domain) 
    return mid 

def send_mail(msg_from, to, subject, text, 
    files=[],server="10.10.10.10", debug=False): 
    assert type(to)==list 
    assert type(files)==list 

    msg = MIMEMultipart() 
    msg['From'] = msg_from 
    msg['To'] = COMMASPACE.join(to) 
    msg['Date'] = formatdate(localtime=True) 
    msg['Subject'] = subject 

    text = text.encode("utf-8") 
    text = MIMEText(text, 'plain', "utf-8") 
    msg.attach(text) 

    msg.add_header('Message-ID', generate_message_id(msg_from)) 

    for file in files: 
     part = MIMEBase('application', "octet-stream") 
     part.set_payload(open(f,"rb").read()) 
     Encoders.encode_base64(part) 
     part.add_header('Content-Disposition', 'attachment; filename="%s"' 
         for file in files: 
     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(file)) 
     msg.attach(part) 

    if not debug: 
     smtp = smtplib.SMTP(server) 
     smtp.sendmail(msg_from, to, msg.as_string()) 
     smtp.close() 

    return msg 
send_mail(msg_from, to, subject, text,files=[],server="10.10.10.10", debug=False) 

エラー:

Traceback (most recent call last): 
File "testmail1.py", line 53, in <module> 
    send_mail(msg_from, to, subject, text,files=[],server="10.10.10.10", debug=False) 
File "testmail1.py", line 24, in send_mail 
    assert type(to)==list 
AssertionError 

を私は、Linux OSから使用してのpython 2.7

を使用していますが

+0

「to」は文字列でありリストではありません –

答えて

3
を修正するために私を助けてください

toフィールドはリストにする必要があります。理論的には複数の人に電子メールを送る。だから私はお勧めしたい:あなたがエラーを取得している理由

to = ["[email protected]"] 

send_mail方法をチェックし、最初にtoフィールドがリストであれば、それはです。

documentation

関連する問題