如何在gmail中发送电子邮件之前或之后获取消息ID? [复制]

Posted

技术标签:

【中文标题】如何在gmail中发送电子邮件之前或之后获取消息ID? [复制]【英文标题】:How to get message ID before or after sending email in gmail? [duplicate] 【发布时间】:2018-02-16 05:31:53 【问题描述】:

我正在为 Gmail 开发 Chrome 扩展程序。 我想在发送电子邮件之前或发送电子邮件之后在我的分机中获取“消息 ID”。我怎样才能实现它?

Gmail 中的邮件 ID 是如何生成的?

它是在发送电子邮件之前还是之后生成的?

注意:我没有覆盖电子邮件功能。在 Gmail 中发送电子邮件时,我只需要唯一的 emailID。

我想将此电子邮件 ID 在请求中传递给 Gmail API,以便我可以获取电子邮件数据作为响应。

【问题讨论】:

【参考方案1】:

根据我的经验,它是在发送电子邮件后创建的。您会注意到,如果有草稿消息,则有一个 ID,但是一旦发送,此 ID 将转换为其 messageID(不同的值),您可以使用它在收件箱中搜索。你可以查看这个related SO post,它讨论了messageID 和draftID 之间的区别。例如,Apps Script 中的Mogzdad's code sn-p 使用Gmail API advance Service 在发送邮件后返回id。

/**
 * Send a raw RFC 2822 formatted and base64url encoded email
 * using the Advanced Gmail service.
 *
 * From http://***.com/a/35073785/1677912
 *
 * @param String  raw  RFC 2822 formatted and base64url encoded message
 *
 * @returns String     Message ID of the message (now in Sent Messages).
 */
function sendRawMessage( raw ) 
  var message = Gmail.newMessage();
  message.raw = raw;
  var sentMsg = Gmail.Users.Messages.send(message, 'me');
  return sentMsg.id;

希望这会有所帮助。

【讨论】:

感谢您的回复。邮件发送后能否获取邮件ID?而且我不想覆盖 gmail 服务。电子邮件照常发送,我唯一需要的是消息 ID。 是的,您可以使用应用程序脚本控制台测试代码

以上是关于如何在gmail中发送电子邮件之前或之后获取消息ID? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中发送电子邮件?

无法使用 Gmail SMTP 设置在 Joomla 中发送电子邮件。收到 SMTP 服务器错误:需要 5.5.1 身份验证。如何解决这个问题?

无法使用 gmail SMTP 在 Zend 中发送电子邮件。出现致命错误:未捕获的异常“Zend_Mail_Protocol_Exception”。如何解决这个问题?

在Google Cloud Service中发送电子邮件

无法在Codeigniter中发送电子邮件,没有错误消息。本地或远程

如何根据新的安全策略在 .Net 中发送电子邮件?