2014-02-07 2 views
0

파이썬 스크립트를 사용하여 전자 메일을 보내려고하지만 형식이 어떻게 되어도 전자 메일이 내 사서함에 도착할 것으로 예상됩니다. 형식이 잘못되었습니다. 아래는 이메일을 보내는 내 방법입니다. -Python과 SMTP를 사용하여 올바른 형식의 전자 메일을 보내는 방법은 무엇입니까?

def send_mail(data): 
    sender = '[email protected]' 
    receivers = ['[email protected]'] 

    message = """From: [email protected] 
    To: [email protected] 
    Subject: Send mail from python!! 

    """ 
    body = 'Some Text\n' 
    for item in data: 
     body = body + '{name} - {res}\n'.format(name=item['name'], res=item['res']) 

    message = message + body 

    try: 
     smtpObj = smtplib.SMTP('corp.host.com') 
     smtpObj.sendmail(sender, receivers, message) 
     print "Mail sent" 
    except smtplib.SMTPException: 
     print "You can't spam. Mail sending failed!" 

여기 데이터에는 키 - 값 쌍이 있습니다.

그리고 내 Outlook 사서함이 같은 이메일을 얻고있다 - 나의 전망에 From: 섹션에서

, 문자열 아래에 잘못되는대로오고있다 -

[email protected] To: [email protected] Subject: Send mail from python!! 

그리고 To:, Subject: 섹션이 Empty로 또한 잘못되었습니다.

Some Text 

machinA - 0 
machineB - 0 
machineC - 0 

가 어떻게 내 데이터가 내 Outlook 사서함에 다음과 같이 표시 할 나타낼 수 -

내가 한 줄에 오는 모든 것을보고하고 있지만이 결과를 원하는 몸에

는 다음과 같이 표시합니다? 트리플 인용 보존 이후

+1

머리글은 \ r \ n으로 구분해야합니다. 이메일 클래스를 사용하여 적절한 메시지를 작성하십시오. – Max

+0

@Max가 정확합니다. 지금 가지고있는 것처럼 보이지만 예제가 필요하면 알려주세요. – Feign

+0

확실하십니까? 제 예제에서 예제를 제공 할 수 있습니까? – AKIWEB

답변

1

모든 공간, 실수로 전송되었다 :

From: [email protected] 
     To: [email protected] 
     Subject: Send mail from python!! 

이 호출 헤더 전개 : 들여 쓰기 라인 헤더가 계속된다는 것을 의미한다. 그래서 이것은 정말로 틀린 형식의 From 헤더입니다. 불필요한 공간이 없는지 확인해야합니다. 이렇게하면 현재 예제가 수정됩니다.

def send_mail(data): 
    sender = '[email protected]' 
    receivers = ['[email protected]'] 

    message = """\ 
From: [email protected] 
To: [email protected] 
Subject: Send mail from python!! 
""" 
    body = '\n\nSome Text\n' 
    for item in data: 
     body = body + '{name} - {res}\n'.format(name=item['name'], res=item['res']) 

    message = message + body 

    try: 
     smtpObj = smtplib.SMTP('corp.host.com') 
     smtpObj.sendmail(sender, receivers, message) 
     print "Mail sent" 
    except smtplib.SMTPException: 
     print "You can't spam. Mail sending failed!" 

그러나 수동으로 메시지를 구성하면 안됩니다. Python에는 메시지를 생성하기위한 email.message에 멋진 클래스가 포함되어 있습니다. 이제

import email.message 

m = email.message.Message() 
m['From'] = "[email protected]" 
m['To'] = "[email protected]" 
m['Subject'] = "Send mail from python!!" 

m.set_payload("Your text only body"); 

, 당신은 문자열로 메시지를 설정할 수 있습니다 : 당신이 비 사용하려는 경우

>>> m.as_string() 
'To: [email protected]\nFrom: [email protected]\nSubject: Send mail from python!!\n\nyour text-only body' 

내가 제대로 이메일을 처리, 경고합니다 매우 크고 복잡한 주제이며, 아스키, 첨부 파일 등을 배우려면 약간의 학습 곡선이 필요합니다. 읽고 읽을 수있는 많은 문서가있는 email.message 라이브러리의 모든 기능을 사용해야합니다.

+0

제안 해 주셔서 감사합니다. 이제부터는 From, To 및 Subject 섹션을 제대로 볼 수 있습니다. 그러나 데이터는 메일 본문에 전혀 들어오지 않습니다. From, To 및 Subject 섹션 만 현재 정상적으로 작동하고 있습니다. 왜 그런 일이 벌어지고 있는지 알 수 있습니까? – AKIWEB

+0

첫 번째 옵션은 내 데이터가 매우 간단하고 직관적이어서 지금은 첫 번째 옵션으로 사용하려고 시도했습니다. – AKIWEB

+0

제목 뒤에 두 개 \ n이 필요합니다.헤더 섹션이나 본문 앞에 추가하십시오. – Max

관련 문제