Определите отправителя при отправке почты с Python (smtplib)

Метод Firebase JavaScript (Web) SDK .set возвращает обещание, то есть обещание уже существует. См. Электронная документация «Задать документ ».

// Add a new document in collection "cities"
db.collection("cities").doc("LA").set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})
.then(function() {
    console.log("Document successfully written!");
})
.catch(function(error) {
    console.error("Error writing document: ", error);
});
blockquote>

Возможно, вам будет проще использовать async / await (более интуитивно понятный). В этом сценарии вы бы сделали что-то вроде:

async function writeDocument(obj){
  var writeOperation = await db.collection("cities").doc("LA").set(obj);
  //now this code is reached after that async write
}

9
задан TimothyP 12 February 2009 в 11:52
поделиться

3 ответа

smtplib автоматически не включает a From: заголовок, таким образом, необходимо поместить один в себя:

message = 'From: me@example.com\nSubject: [PGS]: Results\n\nBlaBlaBla'

(На самом деле, smtplib не включает заголовков автоматически, но просто отправляет текст, что Вы даете его как необработанное сообщение),

10
ответ дан 4 December 2019 в 06:01
поделиться

Можно использовать email.message. Класс сообщений и использование это для генерации заголовков пантомимы, включая from:, to: и subject. Отправьте as_string() результат через SMTP.

>>> from email import message
>>> m1=message.Message()
>>> m1.add_header('from','me@no.where')
>>> m1.add_header('to','myself@some.where')
>>> m1.add_header('subject','test')
>>> m1.set_payload('test\n')
>>> m1.as_string()
'from: me@no.where\nto: myself@some.where\nsubject: test\n\ntest\n'
>>> 
12
ответ дан 4 December 2019 в 06:01
поделиться

"Отправитель", которого Вы указываете в этом случае, является отправителем конверта, который передается на сервер SMTP.

То, что Ваш MUA (Почтовый Агент пользователя - т.е. перспектива/Thunderbird и т.д.) показывает Вам, "От": заголовок.

Обычно, если бы я использую smtplib, я скомпилировал бы заголовки отдельно:

headers = "From: %s\nTo: %s\n\n" % (email_from, email_to)

Формат От заголовка условно обычно "Name" <user@domain>

Необходимо включать заголовок "Идентификатора сообщения" и "Ответ - К" заголовку также во всей связи. Тем более, что спам-фильтры могут взять на отсутствии их как большая вероятность, что почта является спамом.

Если у Вас почтовое тело в переменном теле, просто скомпилируйте полное сообщение с:

message = headers + body

Отметьте двойную новую строку в конце заголовков. Также стоит отметить, что серверы SMTP должны разделить заголовки с новыми строками только (т.е. LF - перевод строки). Однако я видел сервер Windows SMTP или два, который использует \r\n (т.е. CRLF). Если Вы находитесь в Windows, YMMV.

12
ответ дан 4 December 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: