没有发送电子邮件与Python示例 [英] Failing to send email with the Python example

查看:276
本文介绍了没有发送电子邮件与Python示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



尝试从这里的例子:
http://docs.python.org/library/smtplib.html#smtplib.SMTP



,但添加了 server = smtplib.SMTP_SSL('smtp.gmail.com',465)我有一个没有SSL连接的反弹。



现在我得到这个:

 追溯(最近call last):
文件C:/Python26/08_emailconnects/12_29_EmailSendExample_NotWorkingYet.py,第37行在< module>
server = smtplib.SMTP('smtp.gmail.com',65)
文件C:\Python26\lib\smtplib.py,第239行,__init__
(code,msg)= self.connect(host,port)
文件C:\Python26\lib\smtplib.py,第295行,连接
self.sock = self。 _get_socket(host,port,self.timeout)
文件C:\Python26\lib\smtplib.py,第273行,_get_socket
return socket.create_connection((port,host) ,timeout)
文件C:\Python26\lib\socket.py,第512行,在create_connection
raise错误,msg
错误:[Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或连接的主机无法响应$建立连接失败
>>>

想法?






server = smtplib.SMTP(smtp.google.com,495)给我一个超时错误。只是smtplib.smtp(smtp.google.com,495)给了我SSLError:[Errno 1] _ssl.c:480:error:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议(见下文)



我正在尝试不同的端口,现在我得到一个全新的错误。我只是发布了一大堆代码,我可能会犯一些菜鸟的错误。



  import smtplib 

mailuser ='MYEMAIL@gmail.com'

mailpasswd ='MYPASSWORD'

fromaddr ='MYEMAIL@gmail.com'

toaddrs ='MYEMAIL2@gmail.com'

msg ='Hooooorah!'

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



然后我收到这个错误消息:

 追溯(最近的最后一次呼叫):

server = smtplib.SMTP_SSL('smtp.google.com')中的文件C:/Python26/08_emailconnects/12_29_eMAILSendtryin_stripped.py,第16行$文件C:\\ Python26\lib\smtplib.py,第749行,__init__
SMTP .__ init __(self,host,port,local_hostname,timeout)
文件C:\Python26\lib\ smtplib.py,第239行,__init__
(代码,msg)= self.connect(主机,端口)
文件C:\Python26\lib\smtplib.py,行295,连接
self.sock = self._get_socket(host,port,self.timeout)
文件C:\Python26\lib\smtplib.py,第755行,在_get_socket
self.sock = ssl.wrap_socket(self.sock,self.keyfile,self.certfile)
文件C:\Python26\lib\ssl.py,第350行,在wrap_socket
suppress_ragged_eofs = suppress_ragged_eofs
文件C:\Python26\lib\ssl.py,第118行,__init__
self.do_handshake()
文件C :\Python26\lib\ssl.py,第293行,do_handshake
self._sslobj.do_handshake()
SSLError:[Errno 1] _ssl.c:480:error:140770FC: SSL例程:SSL23_GET_SERVER_HELLO:未知协议



看起来像server = smtplib.SMTPSSLPORT = 587实际上是server = smtplib.SMTP 下划线 SSL 下划线 PORT = 587,有一些格式化的事情

解决方案

以下代码适用于我:

  import smtplib 

FROMADDR =my.real.address@gmail.com
LOGIN = FROMADDR
PASSWORD =my.real.password
TOADDRS = [my.real.address@gmail.com]
SUBJECT =Test

msg =(From:%s\r\ nTo:%s\r\\\
Subject:%s\r\\\
\r\\\

%(FROMADDR,,.join(TOADDRS),SUBJECT))
msg + =some text\r\\\


server = smtplib.SMTP('smtp.gmail.com',587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN,PASSWORD)
server.sendmail(FROMADDR,TOADDRS,msg)
server.quit()

我使用的是Python 2.5.2。 p>

编辑:将端口从25更改为587,建议由ΤZΩΤZOΙΟΥ,并删除第二个ehlo()。现在我想知道为什么端口25从我的机器(和端口465不 )完美地


I've been trying (and failing) to figure out how to send email via Python.

Trying the example from here: http://docs.python.org/library/smtplib.html#smtplib.SMTP

but added the line server = smtplib.SMTP_SSL('smtp.gmail.com', 465) after I got a bounceback about not having an SSL connection.

Now I'm getting this:

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

Thoughts?


server = smtplib.SMTP("smtp.google.com", 495) gives me a timeout error. just smtplib.smtp("smtp.google.com", 495) gives me "SSLError: [Errno 1] _ssl.c:480: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol" (see below).

I'm trying different ports and now I'm getting a completely new error. I'll just post the whole bit of code, I'm probably making some rookie mistake.

"

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

"

and then I get this error message: "

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

"

note that actually the which looks like "server = smtplib.SMTPSSLPORT=587" is actually "server = smtplib.SMTP underscore SSL underscore PORT=587", there's some sort of formatting thing going on here.

解决方案

The following code works for me:

import smtplib

FROMADDR = "my.real.address@gmail.com"
LOGIN    = FROMADDR
PASSWORD = "my.real.password"
TOADDRS  = ["my.real.address@gmail.com"]
SUBJECT  = "Test"

msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
       % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
msg += "some text\r\n"

server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()

I'm using Python 2.5.2.

Edit: changed port from 25 to 587 as suggested by ΤΖΩΤΖΙΟΥ, and dropped the second ehlo(). Now I would love to know why port 25 works perfectly from my machine (and port 465 does not).

这篇关于没有发送电子邮件与Python示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆