2017-10-09 13 views
0

私は、アドレスのリストを反復してそれぞれにメールを送るループを持っています。MIMEMultipart edit msg ['To']受信者

def send_mail(self, user_name, smtp_host, smtp_user, smtp_pass, smtp_port): 
    s = smtplib.SMTP_SSL(smtp_host[0],smtp_port[0]) 
    s.login(smtp_user[0],smtp_pass[0]) 

    msg = MIMEMultipart()   
    msg.attach(MIMEText(self.message)) 
    msg['From'] = user_name[0]   
    msg['Subject'] = self.subject 

    for f in self.attachment_list: 
     part = MIMEBase('application', "octet-stream") 
     part.set_payload(open('temp/'+f,"rb").read()) 
     encoders.encode_base64(part) 
     part.add_header('Content-Disposition', 'attachment; filename="{0}"'.format(os.path.basename(f))) 
     msg.attach(part) 
    for i,address in enumerate(Sheet.email_list): 
     print("Send email: " + address)   
     msg['To'] = address 
     s.sendmail(smtp_user[0], address, msg.as_string()) 
    s.quit()  
    print("SMTP connection closed") 

コードが正常に実行され、各アドレスに電子メールが送信されます。ただし、メールアプリケーションでメールを表示すると、各アドレスに「To:」と表示されます。私はそれが電子メールアドレスを受信して​​いる受信者だけを一覧表示するつもりです。私はコードを使いこなし、問題はmsg ['To']から来ていると判断しました。私はそれをさまざまな方法で調整しようとしましたが、受信者アドレスの1つだけを送信する方法はわかりません。

msg['To'] addresses

答えて

0

回答が見つかりました。 Toヘッダを各繰り返しに置き換える必要がありました。

 if 'To' in msg: 
      msg.replace_header('To', address) 
     else: 
      msg['To'] = address 
関連する問題