формат заголовка Python SMTP - PullRequest
0 голосов
/ 01 октября 2011

Следующий фрагмент кода корректно форматирует мой почтовый скрипт.Это помещает в, от, тему и тело в правильные части электронной почты.Моя проблема заключается в том, что я не могу понять, почему в моей функции соединения требуется два возврата и две строки ("\ r \ n \ r \ n") для отображения тела в письме, когда остальным заголовкам нужен только одинCR.

def message(self):
    subject = input("What is the subject line of your message")
    headers = ["from: " + self.sendfrom,
               "to: " + self.sendto,
               "subject: " + subject,
               "content_type: text/html"]
    headers = "\r\n".join(headers)
    msg = input("type your message")
    return headers, msg

def connect(self, headers, msg):
    self.server.starttls()
    self.server.login(self.usrname,self.pswd)
    self.server.sendmail(self.sendfrom, self.sendto, headers + "\r\n\r\n" + msg)
    print("I sent the email")
    return self.server

Спасибо!

1 Ответ

3 голосов
/ 01 октября 2011

Из-за стандарта тело должно быть отделено от заголовков пустой строкой.

Сообщение состоит из полей заголовка и, необязательно, тела. Тело это просто последовательность строк, содержащих символы ASCII. это отделяется от заголовков пустой строкой (то есть строкой, в которой ничего нет предшествующий CRLF).

ПО электронной почты соответствует этим стандартам и ожидает пустую строку для тела. Если пустой строки нет, просто предполагается, что текст является частью заголовков, и обычно эти почтовые программы по умолчанию скрывают большинство заголовков.

...