Отправка электронной почты через python 2.6 smpt, получатель получает электронную почту от (неизвестный отправитель) [дубликат]

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

5 ответов

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

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

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

8
ответ дан dF. 21 August 2018 в 05:01
поделиться
  • 1
    Возможно, объясняя, что smtplib автоматически не включает заголовок any , будет еще более полезным. – tzot 12 February 2009 в 14:59

При использовании smtplib для добавления имени из имени вместо отображения вашего адреса электронной почты используйте только:

message = """From: whatever-name\nSubject: subject\n\n
body of the message!
""".encode()

Передача этого сообщения через .sendmail (TO, FROM, message) будет работать.

0
ответ дан 0_o 21 August 2018 в 05:01
поделиться

См. этот ответ, он работает для меня.

пример кода:

#send html email

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

msg = MIMEMultipart('alternative')
msg['From'] = formataddr((str(Header('MyWebsite', 'utf-8')), 'from@mywebsite.com'))
msg['To'] = 'to@email.com'

html = "email contents"

# Record the MIME types of text/html.
msg.attach(MIMEText(html, 'html'))

# Send the message via local SMTP server.
s = smtplib.SMTP('localhost')

# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail('from@mywebsite.com', 'to@email.com', msg.as_string())
s.quit()
14
ответ дан Community 21 August 2018 в 05:01
поделиться

Вы можете использовать класс email.message.Message и использовать его для создания заголовков mime, включая 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'
>>> 
11
ответ дан gimel 21 August 2018 в 05:01
поделиться

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

Что ваш MUA (Mail User Agent - то есть Outlook / Thunderbird и т. д.) показывает вам это заголовок «From:».

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

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

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

Вы должны включать заголовок «Message-Id» и заголовок «Reply-To», а также во всех сообщениях. Тем более, что спам-фильтры могут зависеть от их отсутствия как большая вероятность того, что почта является спамом.

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

message = headers + body

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

11
ответ дан Philip Reynolds 21 August 2018 в 05:01
поделиться
Другие вопросы по тегам:

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