Python mit Python autom. E-Mails senden basierend auf Adressen, die in Spreadsheet vorliegen

tarifa

Lieutenant
Registriert
März 2020
Beiträge
549
Tach Community, :D


bin im Moment dabei zu überlegen wie ich mit Python E-Mails zu versenden - dabei liegen die zu verwendenden E-Mail-Adressen in einem Spreadsheet.
Hier unten also sind die Schritte um mittels Python Emails zu senden:: Die Mails sollen mittels Python verschickt werden. Die Mailadressen hierzu liegen in einer Calc-Tabelle auf dem Linux-Notebook

hier der Ansatz mit Pandas:

# wir beginnen mit dem Import der hier benötigten Bibliotheken:
Code:
import pandas as pd
import smtplib

# die Daten zum Einloggen auf den Mail-Server: hier werden sie benötigt!
sender = "fred_vom_bauernhof@gmail.com"
password = "foo_bar"

# nun stellen wir eine Verbindung mit dem gmail-Server her: wir nehmen den Port 587
# Anm.: es ginge auch eine sicherer SSL Kontext mit: context = ssl.create_default_context()

server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login('sender.address@gmail.com', 'password')

# und hier lesen wir die Calc-Tabelle
email_list = pd.read_calc('/Users/adamatan/text/email/data.calc')

# und an dieser Stelle erfolgt das Holen der Mail-Adressen und de email-Texte
names = email_list['NAME']
emails = email_list['EMAIL']

for i in range(len(emails)):

    # hole für jeden Eintrag in dem Calc-Spreadsheet den Namen, die Mailadresse und den Mailtext selbst
    name = names[i]
    email = emails[i]

    # Die Nachricht  die versendet werden soll
    message = "Hallo und guten Tag, lieber " + name

    # Einleiten des Versendens der E-Mail
    server.sendmail(your_email, [email], message)

# und am Ende erfolgt das Schließen des smtp server
server.close()


..und das Senden von Mails mithilfe einer Liste von einer Excel-Tabelle - hier ohne pandas:

Code:
fm = open('die_email.txt', 'rb')
msg = MIMEText(fm.read())
fm.close()
msg['Subject'] = 'hier der Betreff'
msg['From'] = 'sender.address@gmail.com'

server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login('sender.address@gmail.com', 'password')
email_data = csv.reader(open('email.csv', 'rb'))

#um sicher zu gehen dass das Ganz nicht crasht wenn irgendwas schief geht hier ein try block,
#der except block bringt dann eine error messages auf stdout:

for row in email_data:
  if( email_pattern.search(row[1]) ):
    del msg['To']
    msg['To'] = row[1]
    try:
      server.sendmail('test@gmail.com', [row[1]], msg.as_string())
    except SMTPException:
      print "An error occured."
server.quit()

... wobei der zweite Ansatz so noch nicht sauber läuft

D
 
Python:
import smtplib
import csv
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

with open("workshops.csv") as file:
    reader = csv.reader(file)
    next(reader)  # Skip header row

    for mail in reader:
        #Compile the mail  - some of this stuff could go further up
        sender = "sender@provider.com"
        receiver = mail
        msg = MIMEMultipart()
        msg['From'] = sender
        msg['To'] = receiver
        msg['Subject'] = "Geh schlafen!"
        emailText = "this is your email body"
        msg.attach(MIMEText(emailText, 'html'))
        text = msg.as_string()
        #Server Settings
        server = smtplib.SMTP('mail.provider.com', 587)
        server.starttls()
        server.login(sender, "Password")
        server.sendmail(sender, receiver, text)
        server.quit()

Sollte so gehen :)
Sollte etwas nicht klar sein bitte fragen
 
  • Gefällt mir
Reaktionen: tarifa
Zurück
Oben