尝试脚本发送邮件时出现以下错误
import urllib.request
import re
import smtplib
from email.mime.text import MIMEText
from bs4 import BeautifulSoup
page=urllib.request.urlopen("http://www.crummy.com/")
soup=BeautifulSoup(page)
v=soup.findAll('a',href=re.compile('http://www.crummy.com/2012/07/24/0'))
for link in v:
w=link.get('href')
server = smtplib.SMTP( "smtp.gmail.com", 587 )
server.starttls()
server.login( 'xxxxxxxxxxx', 'xxxxxxx' )
server.sendmail( 'xxxxxxxxx', 'xxxxxxxxx', "bonus question is up" )
回溯(最近一次调用最后一次):文件“C:\ Python32 \ bonus”,第14行,
在server = smtplib.SMTP(“smtp.gmail.com”,587)文件
“C:\ Python32 \ lib \ smtplib.py”,第259行,在 init 文件中 连接中的“C:\ Python32 \ lib \ smtplib.py”,第319行 self.sock = self._get_socket(host,port,self.timeout)文件“C:\ Python32 \ lib \ smtplib.py”,第294行,在_get_socket中 return socket.create_connection((host,port),timeout)create_connection中的文件“C:\ Python32 \ lib \ socket.py”,第386行 对于getaddrinfo中的res(主机,端口,0,SOCK_STREAM):socket.gaierror:[Errno 11004] getaddrinfo失败的plse建议 绕过它的最佳方式
答案 0 :(得分:4)
getaddrinfo
函数具有此目的:
getaddrinfo函数提供从ANSI主机名到地址的协议无关转换。
如果失败则意味着它无法将您给定的主机名转换为其各自的地址。它本质上是在进行DNS查询。
getaddrinfo
返回的错误号码“11004”已将此消息与之关联:
有效名称,没有请求类型的数据记录。请求的名称是 有效并且在数据库中找到,但它没有正确的 正在解决的相关数据。通常的例子是a 主机名到地址的转换尝试(使用gethostbyname或 WSAAsyncGetHostByName)使用DNS(域名服务器)。一个MX 记录被返回,但没有A记录 - 表明主机本身存在, 但不能直接到达。
您正在查找的名称似乎没有与之关联的正确数据。
您确定您的网址是否正确?
链接:
getaddrinfo
:http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520(v=vs.85).aspx
WinSock错误代码:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx