简体   繁体   English

如何获取从 smtplib 发送的 email 的 message-id

[英]how to get message-id of email sent from smtplib

I want to record users reply to my mail and display it as thread in my application.我想记录用户对我邮件的回复并将其显示为我的应用程序中的线程。 For this purpose I am using help of message-id in present in the email head.为此,我在 email 头中使用了 message-id 的帮助。 When I sent a mail I can see message-id being printed on the screen how do i get this message-id.当我发送邮件时,我可以看到屏幕上正在打印消息 ID 我如何获取此消息 ID。 Also the message-id created by me is overrided.我创建的消息 ID 也被覆盖。 my code is as below.我的代码如下。

import smtplib
from email.mime.text import MIMEText

subject = 'Hello!'
message = 'hiii!!!'
email = 'someone@somewhere.com'
send_from = 'me@example.com'
msg = MIMEText(message, 'html', 'utf-8')
msg['Subject'] = subject
msg['From'] = send_from
msg['To'] = email
msg['Message-ID'] = '01234567890123456789abcdefghijklmnopqrstuvwxyz'
send_to = [email]

smtp_server = 'email-smtp.us-east-1.amazonaws.com'
smtp_port = 587
user_name = 'abcd'
password = 'abcd'
try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.set_debuglevel(True)
    server.starttls()
    server.ehlo()
    server.login(user_name,password)
    server.sendmail(send_from, send_to, msg.as_string())

except Exception, e:
    print e

使用email.utils.make_msgid创建符合RFC 2822的Message-ID标头:

msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS]

I found the above answer to be incredibly confusing.我发现上面的答案令人难以置信的混乱。 Hopefully the below helps others:希望以下内容对其他人有所帮助:

import smtplib
import email.message
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import email.utils as utils

def send_html_email(subject, msg_text,
                    toaddrs=['foo@gmail.com']):
    fromaddr = 'me@mydomain.com'

    msg = "\r\n".join([
        "From: " + fromaddr,
        "To: " + ",".join(toaddrs),
        "Subject: " + subject,
        "",
        msg_text
    ])

    msg = email.message.Message()
    msg['message-id'] = utils.make_msgid(domain='mydomain.com')
    msg['Subject'] = subject
    msg['From'] = fromaddr
    msg['To'] = ",".join(toaddrs)
    msg.add_header('Content-Type', 'text/html')
    msg.set_payload(msg_text)

    username = fromaddr
    password = 'MyGreatPassword'
    server = smtplib.SMTP('mail.mydomain.com',25)
    #server.ehlo() <- not required for my domain.
    server.starttls()
    server.login(username, password)
    server.sendmail(fromaddr, toaddrs, msg.as_string())
    server.quit()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM