Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תיכנות בלינוקס - שליחת מייל דרך פייתון

costico - 08/10/2017 - 18:34
נושא ההודעה: שליחת מייל דרך פייתון
שלום לכולם!
אני מנסה לשלוח מייל באמצעות פייתון בעזרת הספרייה של smtplib.
כאשר אני שולח באמצעות ג'ימייל, זה עובד, אבל כאשר אני מנסה לשלוח את זה
באמצעות מייל של וואלה זה לא, לכן זה לא בעיה בקוד.
עד כמה שהבנתי בשביל הSMTP של וואלה אני משתמש ב out.walla.co.il
והפורט זהה לפורט שמתמשים עבור gmail, 587.

זה הסקריפט שאני משתמש בו

קוד:

   msg = MIMEMultipart()
   msg['From'] = moneyiswork@walla.co.il
   msg['To'] = to
   msg['Subject'] = subject
   msg.attach(MIMEText(text, 'html', 'utf-8'))
   mailServer = smtplib.SMTP("out.walla.co.il",587)
   mailServer.ehlo()
   mailServer.starttls()
   mailServer.ehlo()
   mailServer.login(sender, pass)
   mailServer.sendmail(sender, to, msg.as_string())
   mailServer.close()



השגיאה שאני מקבל היא:
קוד:

ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host


תודה רבה מראש!
Anonymous - 08/10/2017 - 18:43
נושא ההודעה:
אולי הם לא תומכים ב-SMTP מעל SSL...
ניסית פורט 25?

ראה גם: https://www.fastmail.com/help/technical/ssltlsstarttls.html
costico - 08/10/2017 - 22:08
נושא ההודעה:
כן ניסיתי פורט 25 גם לא תופס
Anonymous - 08/10/2017 - 22:26
נושא ההודעה:
מנסיון עם המייל של walla אל תתפלא אם התקלה אצלם
mksoft - 08/10/2017 - 23:01
נושא ההודעה:
במקרה ולא שינית: אם אתה מנסה מעל 25, אל תפעיל TLS.
costico - 09/10/2017 - 09:52
נושא ההודעה:
mksoft :
במקרה ולא שינית: אם אתה מנסה מעל 25, אל תפעיל TLS.


אמממ, בגלל שאני קצת פחות מבין בקטע הזה,
איך זה אמור להתבטא בסקריפט עצמו?
Anonymous - 09/10/2017 - 12:37
נושא ההודעה:
יש לך שם פונקציה starttls... מניח שיש אחת שהיא רק start בלי tls?
costico - 09/10/2017 - 13:04
נושא ההודעה:
Anonymous :
יש לך שם פונקציה starttls... מניח שיש אחת שהיא רק start בלי tls?

אמממ לא,
מה שכן אבל במקום הפונקציה SMTP יש לי גם SMTP_SSL או SMTP_PORT או SMTP_SSL_PORT.
אולי בחירה אחרת יכולה לשנות? אבל בstarttls אין אפשרות לבחור במשהו אחר
Anonymous - 09/10/2017 - 13:10
נושא ההודעה:
ריפרפתי טיפה על התיעוד, ונשמע שאתה יכול פשוט להסיר את starttls

כדאי לעבור על התיעוד והדוגמאות, יש שם הסברים למצבים השונים.
costico - 09/10/2017 - 13:19
נושא ההודעה:
Anonymous :
ריפרפתי טיפה על התיעוד, ונשמע שאתה יכול פשוט להסיר את starttls

כדאי לעבור על התיעוד והדוגמאות, יש שם הסברים למצבים השונים.


כן צודק, נראה כי הstarttls לא באמת משנה שם מה שכן זה עדיין לא פתר את הבעיה...אותה השגיאה, ניסיתי לעבור על התיעוד אבל ספציפית פה הוא לא ממש עזר לי כי אני לא בדיוק מבין לעומק את השגיאה שאני מקבל(שוב אני לא בקירא לצערי ברשתות)
mksoft - 09/10/2017 - 13:29
נושא ההודעה:
את ה-ehlo השני אתה צריך רק במקרה של tls. אתה יכול גם לשנות את ה-debug level של ה-server כך שתקבל יותר מידע.

ראה דוגמה:
https://pymotw.com/3/smtplib/#authentication-and-encryption

או לפייתון 2:
https://pymotw.com/2/smtplib/#authentication-and-encryption
costico - 09/10/2017 - 13:43
נושא ההודעה:
mksoft :
את ה-ehlo השני אתה צריך רק במקרה של tls. אתה יכול גם לשנות את ה-debug level של ה-server כך שתקבל יותר מידע.

ראה דוגמה:
https://pymotw.com/3/smtplib/#authentication-and-encryption

או לפייתון 2:
https://pymotw.com/2/smtplib/#authentication-and-encryption


הוא פשוט בתוקף מסרב להצליח:

קוד:

Traceback (most recent call last):
  File "C:\Users\costia\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 369, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "C:\Users\costia\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\socket.py", line 378, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/costia/PycharmProjects/untitled17/vfb.py", line 30, in <module>
    "שלום שלום", )
  File "C:/Users/costia/PycharmProjects/untitled17/vfb.py", line 12, in mail_sender
    mailServer = smtplib.SMTP("out.walla.co.il", 587)
  File "C:\Users\costia\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 242, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\costia\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 323, in connect
    (code, msg) = self.getreply()
  File "C:\Users\costia\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 373, in getreply
    + str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [WinError 10054] An existing connection was forcibly closed by the remote host


עשיתי את השינויים שציינת
mksoft - 09/10/2017 - 14:57
נושא ההודעה:
השתמשץ בקוד בעמודים שקישרתי אליהם? הם גם מפעילים debug וכו'.
costico - 09/10/2017 - 15:12
נושא ההודעה:
mksoft :
השתמשץ בקוד בעמודים שקישרתי אליהם? הם גם מפעילים debug וכו'.


יאפ, אותה השגיאה.
אני תוהה אבל אם השגיאה היא בגלל השרת המדיוק של וואלה, כלומר כשמבקשים ממני להזין
את שם השרת אני רושם out.walla.co.il אני תוהה אם קיימת כתובת שרת אחרת שיותר מתאימה לסיטואציה הזו...
mksoft - 09/10/2017 - 16:06
נושא ההודעה:
לא הדבקת את פלט ה-debug info.
costico - 09/10/2017 - 16:18
נושא ההודעה:
mksoft :
לא הדבקת את פלט ה-debug info.


קוד:

Traceback (most recent call last):
  File "C:\Users\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 369, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "C:\Users\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\socket.py", line 378, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/PycharmProjects/untitled17/hk.py", line 31, in <module>
    server = smtplib.SMTP(servername, serverport)
  File "C:\Users\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 242, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 323, in connect
    (code, msg) = self.getreply()
  File "C:\Users\Downloads\WinPython-64bit-3.4.4.3\python-3.4.4.amd64\lib\smtplib.py", line 373, in getreply
    + str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [WinError 10054] An existing connection was forcibly closed by the remote host

mksoft - 09/10/2017 - 21:41
נושא ההודעה:
זה לא debug info (פלט לפני השגיאה), זה traceback (השגיאה עצמה).
כל הזמנים הם GMT + 2 שעות