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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
say_hello
User
Beiträge: 51
Registriert: Sonntag 14. Oktober 2012, 12:33

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
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Benutzeravatar
DeaD_EyE
User
Beiträge: 1240
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Idee: Projekt für CrossPostDetection
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten