Forum

Einloggen | Registrieren | RSS  

luemar(R)

02.01.2017,
15:54
 

e-mail senden vom raspberry unter python (Computertechnik)

hallo geschätzte experten,
habe aus 'das umfassende Handbuch' von Kofler-Kühnast-Scherbeck das folgende Script als Test zum versenden eines
e-mails erstellt:

#!/usr/bin/python3
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header
frm = 'marcus.luetolf@bluewin.ch'
to ='marcus.luetolf@bluewin.ch'
subj = 'from raspberry'
msg = 'Test'
try:
mime = MIMEText(msg, 'plain', 'utf-8')
mime['marcus.luetolf@bluewin.ch'] = frm
mime['marcus.luetolf@bluewin.ch'] = to
mime['from raspberry'] = Header(subj, 'utf-8')
smtp = smtplib.SMTP('bluewin,ch')
#smtp.starttls()
smtp.login('mein user Name', 'mein Passwort')
smtp.sendmail(frm, [to], mime.as_string())
smtp.quit()
except:
print('Fehler', sys.exc_info())

und bekomme (nach Löschen der Verschlüsselungszeile, die von meinem Provider/Server nicht akzeptier wird) die folgende Fehlermeldung
bzw. Aufforderung den Port zu wechseln. Der unten angegeben Port 587 ist der, der in meinem e-mail Konto eingestellt ist.


Fehler (<class 'smtplib.SMTPRecipientsRefused'>, SMTPRecipientsRefused({'marcus.luetolf@bluewin.ch': (573, b'5.1.1 Swisscom Antispam: Authentifizierte Verbindung nicht moeglich. Bitte benutzen Sie den Port 587 oder 465 (SSL/TLS) anstelle von Port 25. Weitere Informationen: www.swisscom.ch/p25.

Wie kann ich den Port von 25 auf 587 wechseln ??

Vielen Dank für einschlägige Infos, luemar.

Gastl

02.01.2017,
16:31

@ luemar

e-mail senden vom raspberry unter python

Oh, da haben wir einen Kandidaten, der in Zukunft viel mehr Spam bekommen wird. :clap:

bastelix(R)

02.01.2017,
17:28
(editiert von bastelix
am 02.01.2017 um 18:39)


@ luemar

e-mail senden vom raspberry unter python

» Wie kann ich den Port von 25 auf 587 wechseln ??
"class smtplib.SMTP(host='', port=0, local_hostname=None, [timeout, ]source_address=None)" [vgl. https://docs.python.org/3/library/smtplib.html ]

Versuch mal (ich glaube da gehört noch ein . statt ein , vor das ch in der Domain)
smtp = smtplib.SMTP('bluewin.ch', 587)

ggf. musst du auch SMTP_SSL statt SMTP verwenden, falls dein Provider TLS erzwingt.
Und was Gastl schon angesprochen hat: Editier mal deinen Post und ersetzte deine E-Mail-Adresse durch einen Dummy ;-)

Edit: Link repariert.

luemar(R)

02.01.2017,
17:29

@ Gastl

e-mail senden vom raspberry unter python

» Oh, da haben wir einen Kandidaten, der in Zukunft viel mehr Spam bekommen
» wird. :clap:

...habe gottseidank einen effektiven Spam Filter, luemar.

luemar(R)

02.01.2017,
18:18

@ bastelix

e-mail senden vom raspberry unter python

» » Wie kann ich den Port von 25 auf 587 wechseln ??
» "class smtplib.SMTP(host='', port=0, local_hostname=None, [timeout,
» ]source_address=None)" [vgl.
» https://docs.python.org/3/library/smtplib.html]
»
» Versuch mal (ich glaube da gehört noch ein . statt ein , vor das ch in der
» Domain)
» smtp = smtplib.SMTP('bluewin.ch', 587)
»
» ggf. musst du auch SMTP_SSL statt SMTP verwenden, falls dein Provider TLS
» erzwingt.
» Und was Gastl schon angesprochen hat: Editier mal deinen Post und ersetzte
» deine E-Mail-Adresse durch einen Dummy ;-)

also ganz nebenbei, finde dieses Forum Spitze...
habe alle "Empfehlungen" probiert:

1. wenn ich die Zeile wie oben ändere in "smtp = smtplib.SMTP('bluewin.ch', 587)"
bekomme ich zwar keine Fehlermeldung mehr aber auch kein Mail und das
Programm schliesst nicht, muss es mit CTRL+C beenden.
Fand übrigens nur Punkte, keine Kommata vor den Domain Namensnennungen (.ch)

2. Wenn ich im Python3 Terminal
>>>class smtplib.SMTP(host='bluewin.ch', port 587, local_hostname=None, [timeout]local_address=None)
eingebe, bekomme ich einen SyntaxError.

3. Aber vielleich noch ganz wichtig: In meinem e-mail Konto steht als Postausgangsserver nicht SPTP sondern SMTPAUTH

Bin sehr empfänglich für weitere "Anregungen", luemar.

bastelix(R)

02.01.2017,
19:38
(editiert von bastelix
am 02.01.2017 um 19:41)


@ luemar

e-mail senden vom raspberry unter python

» 1. wenn ich die Zeile wie oben ändere in "smtp = smtplib.SMTP('bluewin.ch', 587)"
» bekomme ich zwar keine Fehlermeldung mehr aber auch kein Mail und das
» Programm schliesst nicht, muss es mit CTRL+C beenden.
Laut www müsste die Domain für den SMTP smtpauth.bluewin.ch sein.

» Fand übrigens nur Punkte, keine Kommata vor den Domain Namensnennungen (.ch)
In deinem Original-Post steht da ein Komma, kann sich aber auch anderweitig eingeschlichen haben.

» 2. Wenn ich im Python3 Terminal
» >>>class smtplib.SMTP(host='bluewin.ch', port 587, local_hostname=None,
» [timeout]local_address=None)
» eingebe, bekomme ich einen SyntaxError.
Ja, das ist auch die Methoden-Signatur aus der Dokumentation um zu Zeigen wie die Parameter sind. Im Terminal hab ich mit der Python-Syntax aber auch so meine Probleme... Ich häng mal ein Script an.

» 3. Aber vielleich noch ganz wichtig: In meinem e-mail Konto steht als
» Postausgangsserver nicht SPTP sondern SMTPAUTH
Ja, wenn man die richtige Domain verwendet steigt die Chance, dass der Server antwortet :-D

Ich hab mir jetzt mal den Beispiel-Code vom Buch geholt und mit deinem Code verglichen. Du hast da schon einige Änderungen vorgenommen und teilweise auch Fehler eingebaut die sogar mir als nicht-Python-Programmierer auffallen ;-)
Bei den mime['...'] zuweisungen muss in der eckigen Klammer der Mail-Header-Name stehen, also wirklich From, To, ... (Die Klasse verhält sich wie ein assoziatives Array, in Python nennt man das anscheinend Dictionary: http://www.python-kurs.eu/python3_dictionaries.php )

http://www.elektronik-kompendium.de/forum/upload/20170102193541.py
Edit: Der server lässt mich das Script zwar hochladen, aber nicht mehr runterladen:
#<<<<<<<<< BEGIN:sendmail.py >>>>>>>>>>>>
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header

# Absender-Adresse
frm = 'from@domain'
# Empfänger-Adresse
to = 'empfaenger@domain'

# SMTP-Zugangsdaten
smtpHost = 'smtpauth.bluewin.ch'
smtpPort = 587
smtpUser = 'username (=sender email)'
smtpPassword = 'passwort'

subj = 'from raspberry'
msg = 'Test'
mime = MIMEText(msg, 'plain', 'utf-8')
mime['From'] = frm
mime['To'] = to
mime['Subject'] = Header(subj, 'utf-8')

try:
smtp = smtplib.SMTP(smtpHost, smtpPort)
#smtp.starttls()
smtp.login(smtpUser, smtpPassword)
smtp.sendmail(frm, to, mime.as_string())
smtp.quit()
except:
print('Fehler', sys.exc_info())
#<<<<<<<<<<<<<<<<<<<<<< END: sendmail.py >>>>>>>>>>>>
Vorsicht mit den Einrückungen in Python, die verschluckt das Forum

Edit2: Das Script nochmal schön formatiert: https://gist.github.com/anonymous/44906d8b2ad24bbd242b5e3e4735722f

Das Script funktioniert (mit meiner E-Mail-Adresse) wie gewünscht. Ich hab die ganzen Zugansdaten in Variablen ausgelagert, für den ersten Testt musst du nur frm, to, smtpHost, smtpUser und smtPassword anpassen.

P.S. bist eigentlich mit dem PIR-Sensor weitergekommen?

luemar(R)

03.01.2017,
11:09

@ bastelix

e-mail senden vom raspberry unter python

» » 1. wenn ich die Zeile wie oben ändere in "smtp =
» smtplib.SMTP('bluewin.ch', 587)"
» » bekomme ich zwar keine Fehlermeldung mehr aber auch kein Mail und das
» » Programm schliesst nicht, muss es mit CTRL+C beenden.
» Laut www müsste die Domain für den SMTP smtpauth.bluewin.ch sein.
»
» » Fand übrigens nur Punkte, keine Kommata vor den Domain Namensnennungen
» (.ch)
» In deinem Original-Post steht da ein Komma, kann sich aber auch anderweitig
» eingeschlichen haben.
»
» » 2. Wenn ich im Python3 Terminal
» » >>>class smtplib.SMTP(host='bluewin.ch', port 587, local_hostname=None,
» » [timeout]local_address=None)
» » eingebe, bekomme ich einen SyntaxError.
» Ja, das ist auch die Methoden-Signatur aus der Dokumentation um zu Zeigen
» wie die Parameter sind. Im Terminal hab ich mit der Python-Syntax aber auch
» so meine Probleme... Ich häng mal ein Script an.
»
» » 3. Aber vielleich noch ganz wichtig: In meinem e-mail Konto steht als
» » Postausgangsserver nicht SPTP sondern SMTPAUTH
» Ja, wenn man die richtige Domain verwendet steigt die Chance, dass der
» Server antwortet :-D
»
» Ich hab mir jetzt mal den Beispiel-Code vom Buch geholt und mit deinem Code
» verglichen. Du hast da schon einige Änderungen vorgenommen und teilweise
» auch Fehler eingebaut die sogar mir als nicht-Python-Programmierer
» auffallen ;-)
» Bei den mime['...'] zuweisungen muss in der eckigen Klammer der
» Mail-Header-Name stehen, also wirklich From, To, ... (Die Klasse verhält
» sich wie ein assoziatives Array, in Python nennt man das anscheinend
» Dictionary: http://www.python-kurs.eu/python3_dictionaries.php )
»
» http://www.elektronik-kompendium.de/forum/upload/20170102193541.py
» Edit: Der server lässt mich das Script zwar hochladen, aber nicht mehr
» runterladen:
» #<<<<<<<<< BEGIN:sendmail.py >>>>>>>>>>>>
» import smtplib
» import sys
» from email.mime.text import MIMEText
» from email.header import Header
»
» # Absender-Adresse
» frm = 'from@domain'
» # Empfänger-Adresse
» to = 'empfaenger@domain'
»
» # SMTP-Zugangsdaten
» smtpHost = 'smtpauth.bluewin.ch'
» smtpPort = 587
» smtpUser = 'username (=sender email)'
» smtpPassword = 'passwort'
»
» subj = 'from raspberry'
» msg = 'Test'
» mime = MIMEText(msg, 'plain', 'utf-8')
» mime['From'] = frm
» mime['To'] = to
» mime['Subject'] = Header(subj, 'utf-8')
»
» try:
» smtp = smtplib.SMTP(smtpHost, smtpPort)
» #smtp.starttls()
» smtp.login(smtpUser, smtpPassword)
» smtp.sendmail(frm, to, mime.as_string())
» smtp.quit()
» except:
» print('Fehler', sys.exc_info())
» #<<<<<<<<<<<<<<<<<<<<<< END: sendmail.py >>>>>>>>>>>>
» Vorsicht mit den Einrückungen in Python, die verschluckt das Forum
»
» Edit2: Das Script nochmal schön formatiert:
» https://gist.github.com/anonymous/44906d8b2ad24bbd242b5e3e4735722f
»
» Das Script funktioniert (mit meiner E-Mail-Adresse) wie gewünscht. Ich hab
» die ganzen Zugansdaten in Variablen ausgelagert, für den ersten Testt musst
» du nur frm, to, smtpHost, smtpUser und smtPassword anpassen.
»
» P.S. bist eigentlich mit dem PIR-Sensor weitergekommen?

Hallo bastelix, e-mail funktioniert, merci bien !!
Der PIR Sensor funktioniert auch, nachdem ich ihn direkt an die GPIO-Pins angeschlossen habe, hatte wahrscheinlich ungenügenden Kontakt auf dem breadboard.
Viele Grüsse, luemar.

bastelix(R)

03.01.2017,
21:55

@ luemar

e-mail senden vom raspberry unter python

» Hallo bastelix, e-mail funktioniert, merci bien !!
» Der PIR Sensor funktioniert auch, nachdem ich ihn direkt an die GPIO-Pins
» angeschlossen habe, hatte wahrscheinlich ungenügenden Kontakt auf dem
» breadboard.
» Viele Grüsse, luemar.

Freut mich dass es klappt :-) Und danke für die Rückmeldung!