2017-08-07 1 views
-3

Ich erstelle ein E-Mail-Skript in Python. Ich bin in der Lage, E-Mails an mehrere Benutzer zu senden, aber ich möchte, dass es "Hallo Jordan" sagen kann oder was auch immer der Name des Empfängers vor dem Nachrichtentext ist. Ich kann den Code zeigen, den ich habe, wenn das hilft.Senden von E-Mails an mehrere Benutzer mit unterschiedlichen Begrüßungen?

import smtplib 

from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

from email_R import emailRecipients 

recipients = emailRecipients 
addr_from = '[email protected]' 

smtp_user = '[email protected]' 
smtp_pass = 'password' 

try: 
    msg = MIMEMultipart('alternative') 
    msg['To'] = ", ".join(recipients) 
    msg['From'] = addr_from 
    msg['Subject'] = 'Test Email' 

    text = "This is a hours reminder.\nText and html." 
    html = """\ 
    <html> 
     <head></head> 
     <body> 
      <p>This is a hours reminder.</p> 
      <p>Text and HTML</p> 
     <body> 
    </html> 
    """ 

    part1 = MIMEText(text, 'plain') 
    part2 = MIMEText(html, 'html') 

    msg.attach(part1) 
    msg.attach(part2) 

    server = smtplib.SMTP('smtp.gmail.com:587') 
    server.set_debuglevel(True) 
    server.starttls() 
    server.login(smtp_user,smtp_pass) 
    server.sendmail(msg['From'], recipients, msg.as_string()) 
    server.quit() 
+3

nicht nur hilft es, es ist obligatorisch – Kai

+0

"Vor" der Körper ist nicht möglich. Sie müssen jede "Betreff" -Kopfzeile anpassen oder den Text pro Empfänger anpassen. Dies ist kein striktes Python-Problem, sondern behandelt die RFC822- und SMTP-Transportregeln. – glenfant

+1

Bitte schauen Sie sich die SO [how to ask [(https://stackoverflow.com/questions/ask/advice?] An, die einen Code enthält, mit dem Sie Ihr Problem reproduzieren können. Also bitte geben Sie Ihren Code an. –

Antwort

0

Sie müssen eine Mail neu erstellen und einen SMTP-Sendevorgang für jeden Empfänger durchführen. Hier ist, was sollte funktionieren:

recipients = emailRecipients 
addr_from = '[email protected]' 

smtp_user = '[email protected]' 
smtp_pass = 'password' 

server = smtplib.SMTP('smtp.gmail.com:587') 

try: 
    subject_tpl = 'Test Email for {}' 
    text_tpl = "This is a hours reminder for {}.\nText and html." 
    html_tpl = """\ 
    <html> 
     <head></head> 
     <body> 
      <p>This is a hours reminder for {}.</p> 
      <p>Text and HTML</p> 
     <body> 
    </html> 
    """ 
    server.set_debuglevel(True) 
    server.starttls() 
    server.login(smtp_user,smtp_pass) 

    # Loop for each recipient 
    for recipient in recipients: 
     msg = MIMEMultipart('alternative') 
     msg['Subject'] = subject_tpl.format(recipient) 
     msg['To'] = recipient 
     msg['From'] = addr_from 
     part1 = MIMEText(text_tpl.format(recipient), 'plain') 
     part2 = MIMEText(html_tpl.format(recipient), 'html') 
     msg.attach(part1) 
     msg.attach(part2) 
     server.sendmail(msg['From'], (recipient,), msg.as_string()) 
finally: 
    server.quit() 
Verwandte Themen