Seite 1 von 1

autom. Versenden von E-Mails basierend auf Adressen die in Spreadsheet vorliegen

Verfasst: Sonntag 13. Dezember 2020, 00:03
von say_hello
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: Alles auswählen

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() 

das Senden von Mails mithilfe einer Liste von einer Excel-Tabelle:

Code: Alles auswählen

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 ich mir nicht sicher bin, ob der zweite Teil sauber läuft.

D

Re: autom. Versenden von E-Mails basierend auf Adressen die in Spreadsheet vorliegen

Verfasst: Sonntag 13. Dezember 2020, 10:26
von Sirius3
Die gleiche Frage gibt es hier: https://www.computerbase.de/forum/threa ... n.1988855/
Wobei Frage wohl falsch formuliert ist, weil eine richtige Frage lese ich nirgends.

Über einen Index iteriert man nicht. Auch ist es umständlich Name und Email erst in zwei Listen zu trennen, um sie danach wieder zusammenzuführen. Ein read_calc kenne ich nicht.

Code: Alles auswählen

for row in email_list.itertuples():
    message = f"Hallo und guten Tag, lieber {row.NAME}"
    server.sendmail(your_email, [row.EMAIL], message) 
Wobei hier message ja falsch ist, weil sendmail ein ganz bestimmtes Format erwartet.
Im zweiten kopierten Code ist die Einrückung nicht 4 Leerzeichen pro Ebene, die Klammern im if unnötig, das del überflüssig, und das print Python2.

Re: autom. Versenden von E-Mails basierend auf Adressen die in Spreadsheet vorliegen

Verfasst: Sonntag 13. Dezember 2020, 10:46
von noisefloor
Hallo,

exakt die gleiche Frage gibt es auch im deutschen Raspi Forum: https://forum-raspberrypi.de/forum/thre ... et-vorlie/

Dabei muss man sich doch echt fragen, warum jemand die gleiche Frage zur quasi gleichen Zeit in der Foren stellt...
Wobei Frage wohl falsch formuliert ist, weil eine richtige Frage lese ich nirgends.
Das wurde auch schon im Raspi-Forum festgestellt. Schön, wenn alle einer Meinung sind ;-)

Gruß, noisefloor

Re: autom. Versenden von E-Mails basierend auf Adressen die in Spreadsheet vorliegen

Verfasst: Sonntag 13. Dezember 2020, 12:10
von DeaD_EyE
Idee: Projekt für CrossPostDetection