2012-08-01 2 views
-1

Possible Duplicate:
Send email with python파이썬 된 전자 메일을 보내려는 시도는 내가 그렇게 노력하고있어

파이썬으로 이메일을 보내하지만 스크립트를 실행할 때 그것은 2 분을 나는이 오류 얻을 :

Traceback (most recent call last): 
File "./emailer", line 19, in <module> 
server = smtplib.SMTP(SERVER) 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 239, in __init__ 
(code, msg) = self.connect(host, port) 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 295, in connect 
self.sock = self._get_socket(host, port, self.timeout) 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 273, in _get_socket 
return socket.create_connection((port, host), timeout) 
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 512, in create_connection 
raise error, msg 
socket.error: [Errno 60] Operation timed out 

을 이 스크립트는 다음과 같습니다.

#!/usr/bin/env python 

import smtplib 

SERVER = 'addisonbean.com' 

FROM = '[email protected]' 
TO = ['[email protected]'] 

SUBJECT = 'Hello!' 

message = """\ 
Bla 
Bla Bla 
Bla Bla Bla 
Bla Bla Bla Bla 
""" 

server = smtplib.SMTP(SERVER) 
server.sendmail(FROM, TO, message) 
server.quit() 

또한 사이트 IP 주소를 서버로 사용해도 동일한 결과가 나타납니다.

누군가가 왜 이것을하는지, 어떻게 해결할 수 있는지 말해 줄 수 있습니까? 감사!

return socket.create_connection((port, host), timeout) 
socket.error: [Errno 60] Operation timed out 

파이썬의 말 :

+0

SMTP 서버에 인증이 필요하지 않습니까? 일반적으로 수행하기 때문에 – BorrajaX

+0

서버 주소로 실제 메일 서버를 사용해야합니다. 임의의 호스트 이름을 넣을 수는 없습니다. – geoffspear

답변

2

여기에 키 비트의 I는 해당 서버에 연결할 수 없습니다 , 내가 해봤지만 응답하지 않는 것 같습니다. 메일 서버 아니다

SERVER = 'addisonbean.com' 

, 그것을이다

여기에 두 번째 키 비트입니까?

+0

그렇지 않습니다. 나는 정말로 메일 서버가 무엇인지 모른다 ... – Addison

+0

불행히도 메일 서버가 무엇인지 모른 채 이메일을 보내는 것은 매우 어렵다. 이 재료는 오늘까지 파이처럼 쉬울 것이라고 생각할 수 있습니다. 전자 메일에 대해 배우기 시작해야합니다! – slezica

1

addisonbean.com은 (는) 포트 25 개를 청취하고 220 accra.dreamhost.com ESMTP에 응답합니다. 프록시 또는 일종의 방화벽을 사용하는 것 같습니다. 콘솔에서 telnet addisonbean.com 25을 할 수 있습니까?

+0

아니요.이 addisonbean은 다음과 같이 말합니다. nodename도 servname이 제공되거나 알려지지 않았 음 – Addison

+0

죄송합니다. – Addison

+0

아니요. 다음과 같이 말합니다 : 시도 중 69.163.221.133 ... 텔넷 : 주소 69.163.221.133에 연결 : 작업 시간 초과 텔넷 : 원격 호스트에 연결할 수 없습니다. – Addison

0

귀하가 호스팅 업체 인 dreamhost.com에 귀하의 페이지를 호스팅하고있는 것으로 보입니다. 당신이 당신의 계정을 설정

때, 그들은 아마 당신이 하나를 만들 정보를 얻을 수도 있습니다

도메인 ([email protected])로 끝나는 계정 이메일을 만들 수있는 기회를 주었다 호스트 SMTP ("메일 서버")가있는 곳, 사용자 이름, 암호 ... 그리고 스크립트에있는 내용을 모두 채워야합니다.

다른 정규 계정 (Gmail.com, Hotmail Outlook.com)으로 테스트를 시작하고 SMTP 서버가 무엇인지에 대해 (상당히) 읽는 것이 좋습니다. 이메일을 보내려면 대화하기)

다음은 Gmail 계정을 사용하여 이메일을 보내는 간단한 스크립트입니다. 그것이 작동하는 경우 데이터를 별표로 표시되는 정보를 기입, 참조 :

#!/usr/bin/env python 

import traceback 
from smtplib import SMTP 
from email.MIMEText import MIMEText 

smtpHost = "smtp.gmail.com" 
smtpPort = 587 
smtpUsername = "***@gmail.com" 
smtpPassword = "***" 
sender = "***@gmail.com" 

def sendEmail(to, subject, content): 
    retval = 1 
    if not(hasattr(to, "__iter__")): 
     to = [to] 
    destination = to 

    text_subtype = 'plain' 
    try: 
     msg = MIMEText(content, text_subtype) 
     msg['Subject'] = subject 
     msg['From'] = sender # some SMTP servers will do this automatically, not all 

     conn = SMTP(host=smtpHost, port=smtpPort) 
     conn.set_debuglevel(True) 
     #conn.login(smtpUsername, smtpPassword) 
     try: 
      if smtpUsername is not False: 
       conn.ehlo() 
       if smtpPort != 25: 
        conn.starttls() 
        conn.ehlo() 
       if smtpUsername and smtpPassword: 
        conn.login(smtpUsername, smtpPassword) 
       else: 
        print("::sendEmail > Skipping authentication information because smtpUsername: %s, smtpPassword: %s" % (smtpUsername, smtpPassword)) 
      conn.sendmail(sender, destination, msg.as_string()) 
      retval = 0 
     except Exception, e: 
      print("::sendEmail > Got %s %s. Showing traceback:\n%s" % (type(e), e, traceback.format_exc())) 
      retval = 1 
     finally: 
      conn.close() 

    except Exception, e: 
     print("::sendEmail > Got %s %s. Showing traceback:\n%s" % (type(e), e, traceback.format_exc())) 
     retval = 1 
    return retval 

if __name__ == "__main__": 
    sendEmail("***@gmail.com", "Subject: Test", "This is a simple test") 

를 도메인 (의 smtpHost, smtpPort, smtpUsername ...)가 잘 작동 5 월에 해당하는 정보가 있으면 (사용하는 포트에 따라 다르지만 암호화되지 않은 연결에 대한 기본값 인 25 일 수도 있습니다 ... 그렇지 않으면 ... dreamhost.com

으로 확인해야합니다.

"다른 사용자와 SMTP 서버를 공유하는 호스팅을 사용하고 있으므로"발신자 "는 일 수 있습니다. [email protected]하지만 실제 정보는 dreamhost에 연결합니다.com SMTP 서버가 다를 수 있습니다. 'smtpUsername'이 (가) 귀하의 사이트 관리자 계정에 로그인 할 때 사용하는 사용자 이름 일 수 있습니다. 'smtpHost'은 (으)로 변경 될 수 있습니다. smtp.dreamhost.com 또는 그 ... 알고있다.

당신은 이것을 수행하는 방법에 대해 lot of resources이 있습니다.

디자이너 또는 사진 작가 인 것처럼 보입니다 ... 그 중 하나 친구들 사람들이 화면에 보이는 것과 모든 것들에 관심이 있습니다 ... 그럼 MiME emails이 무엇인지 조사하고 싶을 수 있습니다. 알다시피 ... 이메일은 문자로만 전송되지는 않지만 멋진 HTML을 넣을 수는 있습니다 ... 내가 무슨 말을하는지 알아?

관련 문제