2017-12-28 37 views
0

SMTP 라이브러리를 사용하여 전자 메일을 보내 특정 전자 메일 주소로 전자 메일을 보내는 완전 자동화 된 Raspberry Pi를 만들려고합니다. 그러나 실제로 전자 메일이 성공적으로 전송되었는지 테스트하는 방법을 알지 못합니다. 인터넷에 연결되어 있지 않은 것처럼 어떤 이유로 든 보낼 수 없다면 몇 분 후에 다시 시도해야합니다.Python 2.7 SMPT 메일을 보낸 경우 테스트

[..] 
try: 
    smtpserver.sendmail(sender, [receiver], msg.as_string()) 
    smtpserver.quit() 
except smtplib.SMTPConnectionError: 
    print(_logger.exception('SMTP Connection failed to %s on %s' % (host, port))) 
나는 그냥 인쇄 명령하지만 때문에 그것이 작동하지 않을 것을 알고 있었다

을 :

는 내가이 일 것이라고 뭔가를 발견 Raspian GNU/리눅스 8

와 함께 라즈베리 모델 3를 사용 그냥 안전을 위해 노력했습니다. 나는이 오류 코드를 가지고 :

Traceback (most recent call last): 
    File "**Path + Filename**", line 43, in <module> 
    smtpserver = smtplib.SMTP('***', ***) 
    File "/usr/lib/python2.7/smtplib.py", line 256, in __init__ 
    (code, msg) = self.connect(host, port) 
    File "/usr/lib/python2.7/smtplib.py", line 316, in connect 
    self.sock = self._get_socket(host, port, self.timeout) 
    File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket 
    return socket.create_connection((host, port), timeout) 
    File "/usr/lib/python2.7/socket.py", line 553, in create_connection 
    for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
gaierror: [Errno -2] Name or service not known 

은 어떻게 테스트 할 수 있습니다 설정된 연결하고 메일이 전송 된 경우 어떻게해야합니까?

추신 : 내 영어는 완벽하지 않습니다하지만 난 그게 이해 희망

+0

일반적인 해결책은 큐를 오프로드하고 스마트 호스트라고하는 실제 메일 서버에 로직을 다시 시도하는 것입니다. 여러분의 코드는 충돌 등을 일으키지 않고 스마트 호스트로 확실하게 보내야합니다. 아마도 클라우드 서비스에 Postfix와 같은 실제 MTA를 설치해야합니다. 보내지 않은 메시지 대기열을 관리하는 방법, 재시도를 관리하고 예약하는 방법, 목적지를 전달할 수 없거나 목적지를 전달할 수없는 것으로 간주하는 방법 등을 알고 있습니다. – tripleee

+0

물론 이것은 당면한 문제에 도움이되지 않습니다. 네트워크 케이블이 연결되어 있지 않으면 메일 전송이 어떤 방식 으로든 실패합니다. – tripleee

답변

0

에만 smtplib.SMTPConnectionError을 제외하고 당신은 귀하의 게시물 역 추적이 (그래서 당신의 이메일이 전송되지 않음) 다른 예외입니다 :

당신을 제외 할 수 다른 모든 예외를 디버그 한 다음 거기에서 디버그하십시오.

+0

나는 무엇을 해야할지 모르겠다. 내가 작성한 코드를 사용했지만 이전과 같은 오류가 다시 나타납니다. – Gameniti

+0

프로그램이 충돌하는 행을 디버깅 했습니까? – aircraft

+0

코드 시작 부분에 "try :"를 설정해야했습니다. 이제는 "[Errno -2] 이름이나 서비스를 알 수 없다"고 말합니다. 그러나 이것은 나를 돕지 않습니다. 나는 고급 초보자라고해야만합니다. – Gameniti