Я пытался (и не смог) выяснить, как отправлять электронную почту через Python.
Попробуем пример отсюда:
http://docs.python.org/library/smtplib.html#smtplib.SMTP
но добавил строку server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
после того, как я получил отскок от отсутствия SSL-соединения.
Теперь я получаю это:
Traceback (most recent call last):
File "C:/Python26/08_emailconnects/12_29_EmailSendExample_NotWorkingYet.py", line 37, in <module>
server = smtplib.SMTP('smtp.gmail.com', 65)
File "C:\Python26\lib\smtplib.py", line 239, in __init__
(code, msg) = self.connect(host, port)
File "C:\Python26\lib\smtplib.py", line 295, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:\Python26\lib\smtplib.py", line 273, in _get_socket
return socket.create_connection((port, host), timeout)
File "C:\Python26\lib\socket.py", line 512, in create_connection
raise error, msg
error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
>>>
Мысли
server = smtplib.SMTP ("smtp.google.com", 495) выдает ошибку тайм-аута. просто smtplib.smtp ("smtp.google.com", 495) выдает мне "SSLError: [Errno 1] _ssl.c: 480: ошибка: 140770FC: процедуры SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол" (см. ниже).
Я пробую разные порты, и теперь я получаю совершенно новую ошибку. Я просто опубликую весь код, возможно, я делаю какую-то новичок.
"
import smtplib
mailuser = 'MYEMAIL@gmail.com'
mailpasswd = 'MYPASSWORD'
fromaddr = 'MYEMAIL@gmail.com'
toaddrs = 'MYEMAIL2@gmail.com'
msg = 'Hooooorah!'
print msg
server = smtplib.SMTP_SSL('smtp.google.com')
server = smtplib.SMTP_SSL_PORT=587
server.user(mailuser)
server.pass_(mailpasswd)
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
"
и тогда я получаю это сообщение об ошибке: "
Traceback (most recent call last):
File "C:/Python26/08_emailconnects/12_29_eMAILSendtryin_stripped.py", line 16, in <module>
server = smtplib.SMTP_SSL('smtp.google.com')
File "C:\Python26\lib\smtplib.py", line 749, in __init__
SMTP.__init__(self, host, port, local_hostname, timeout)
File "C:\Python26\lib\smtplib.py", line 239, in __init__
(code, msg) = self.connect(host, port)
File "C:\Python26\lib\smtplib.py", line 295, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:\Python26\lib\smtplib.py", line 755, in _get_socket
self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
File "C:\Python26\lib\ssl.py", line 350, in wrap_socket
suppress_ragged_eofs=suppress_ragged_eofs)
File "C:\Python26\lib\ssl.py", line 118, in __init__
self.do_handshake()
File "C:\Python26\lib\ssl.py", line 293, in do_handshake
self._sslobj.do_handshake()
SSLError: [Errno 1] _ssl.c:480: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
"
обратите внимание, что на самом деле то, что выглядит как "server = smtplib.SMTPSSLPORT = 587", на самом деле "server = smtplib.SMTP подчеркивание SSL подчеркивание PORT = 587", есть какая-то о вещании форматирования, происходящем здесь.