2017-12-30 59 views
0

이메일을 보내기 위해 파이썬 라이브러리가 내장되어 있습니다. 내가 보내는 메시지에 시간을 넣을 때를 제외하고는 모두 작동합니다. 은 7:30 pm입니다.파이썬 SMTP 라이브러리 비어있는 이메일

전자 메일 메시지에 시간을 넣으면 전자 메일 수신자가 빈 전자 메일을 받게됩니다. 시간을 없애면 이메일이 정상적으로 전송됩니다. 나는 그 시간에 뭔가가 이메일을 망칠 것이라고 생각하고있다. 코드에서 무엇을 변경해야합니까? 그래서 전자 메일 본문에 시간을 할애 할 수 있습니다. 감사!

from smtplib import SMTP 
def sendEmail(message,address): 
    debuglevel = 0 

    smtp = SMTP() 
    smtp.set_debuglevel(debuglevel) 
    #connect to the email server 
    smtp.connect('smtp.gmail.com', 587) 
    smtp.starttls() 
    smtp.login('[email protected]', 'ourpassword') 
    #set the email to be sent from 
    from_addr = "Auto Notification <sender email>" 
    #send the email from our address and the message and recepients provided in the function definition. 
    smtp.sendmail(from_addr, address, message) 
    smtp.quit() 

finalStr = "The Girls Varsity Basketball has been changed to 02/06/2018 at 7:30 pm * - (previously 6:15 pm ) at Clear Lake High School" 

sendEmail(finalStr, '[email protected]') 
+0

당신은 이메일의 원시 소스 봤어? 그 것도 비어 있습니까? 나는 왜 전자 메일이 시간 때문에 비어있는 지 이유를 생각할 수 없다. – Barmar

+0

유일한 차이점은 줄이 더 낮지 만 그렇지 않으면 똑같은 것처럼 보입니다. @Barmar – LewisCallaway

+0

좋은 이메일이나 나쁜 이메일은 줄이 낮습니까? 헤더와 메시지 본문 사이에 빈 줄이 있어야합니다. 빈 줄에는이 내용이 없습니다. – Barmar

답변

0

일부 문자가 SMTP 서버로 전송되는 동안 제어 문자로 잘못 해석되고 있습니다. 문자열을 MIMEText로 인코딩 해보십시오.

from email.mime.text import MIMEText 

#send the email from our address and the message and recepients provided in the function definition. 
encoded_message = MIMEText(message).as_string() 
smtp.sendmail(from_addr, address, encoded_message) 

다음은 전송할 때 결과가 어떻게 다른지 보여줍니다. 인코딩은 작업 예제에서 선언됩니다. 후

send: b'The Girls Varsity Basketball has been changed to 02/06/2018 at 7:30 pm * - (previously 6:15 pm ) at Clear Lake High School\r\n.\r\n' 

전에

는 :

send: b'Content-Type: text/plain; charset="us-ascii"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: 7bit\r\n\r\nThe Girls Varsity Basketball has been changed to 02/06/2018 at 7:30 pm * - (previously 6:15 pm ) at Clear Lake High School\r\n.\r\n'