使用Gmail API发送的电子邮件未在线程中分组?
我正在使用 gmail api
来发送电子邮件。这是我要创建电子邮件的功能:
def createEmailNoAttachments(self, send_to_emails, subject_text, main_message_text, msgID=None, inReplyTo=None, html=False):
try:
fromEmail = self.from_email_total
if (type(main_message_text) == list) or (type(main_message_text) == tuple):
total_text = ""
for line in main_message_text:
if type(line) == str:
total_text = total_text + line + "\n"
main_message_text = total_text
mimeMessage = MIMEMultipart()
if type(send_to_emails) == list:
mimeMessage['to'] = ", ".join(send_to_emails)
else:
mimeMessage['to'] = send_to_emails
mimeMessage['from'] = fromEmail
mimeMessage['subject'] = subject_text
if inReplyTo != None:
mimeMessage["In-Reply-To"] = inReplyTo
mimeMessage["References"] = inReplyTo
if msgID != None:
mimeMessage['Message-ID'] = msgID
if html:
msg= MIMEText(main_message_text, 'html')
else:
msg= MIMEText(main_message_text, "plain")
mimeMessage.attach(msg)
raw = base64.urlsafe_b64encode(mimeMessage.as_bytes())
raw = raw.decode()
body = {'raw': raw}
return body
except:
self.myLogger.error("An error was encountered while attempting to create gmail email")
tb = traceback.format_exc()
self.myLogger.exception(tb)
return False
然后,我注意到的
def gmailAPISendEmail(self, email_message, deleteFromInbox=False, userID="me"):
try:
self.refreshGmailService()
self.myLogger.info("Attempting to send email message")
request = self.service.users().messages().send(userId=userID, body=email_message)
response = self.executeGmailAPI_withretry(request=request)
if response == False:
self.myLogger.error("An error occurred in executeGmailAPI_withretry while trying to send email message")
return False
else:
try:
responseID = str(response['id'])
if deleteFromInbox == True:
delete_result = self.deleteEmail(emailID=responseID)
if delete_result == False:
self.myLogger.error(f"An error occurred in deleteEmail with responseID ({responseID})")
self.myLogger.info("Successfully sent email message with ID (" + responseID +")")
return responseID
except:
return "CouldNotExtractID"
except:
self.myLogger.error("An error occurred in gmailAPISendEmail")
tb = traceback.format_exc()
self.myLogger.exception(tb)
return False
问题是,我注意到的问题是,使用上述函数发送时,带有相同电子邮件主题的类似电子邮件和相同的发件人和收件人在一个线程中不会被分组( Gmail API
)。在收件人的电子邮件收件箱中,每个电子邮件都会单独出现,即使它们具有相同的主题以及相同的发送者和接收器电子邮件地址。
我相信下一步将是手动分配 threadID
。但是,这远非理想,因为我需要纳入一些逻辑来完成所有这些逻辑。
在我使用 SMTP
之前,我不必设置 threadID
或类似的内容。在使用 SMTP
发送电子邮件时,电子邮件将根据同一电子邮件主题和同一收件人自动分组。
在之前和现在之间没有任何变化,除了我正在使用 gmail api
来代替 smtp
的同一电子邮件。
为什么 gmail api
行为与 smtp
相似,即使我的创建电子邮件非常相似?我可以做些什么来拥有 gmail
收件箱来对电子邮件进行分组,就像 smtp
一样,而无需构建逻辑并跟踪 thread> thread> threadID
s ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自发送
因此,您需要您要回复的原始消息的消息ID。这与线程ID不同。
From sending
So you need the message id of the original message you are replying to. This is not the same as thread id.