【问题标题】:User.history and actual message sendUser.history 和实际消息发送
【发布时间】:2016-05-26 14:33:53
【问题描述】:

我们试图知道消息何时真正发送,当消息被标记为 SENT 时,gmail API 似乎通过用户历史记录间接提供此信息。

但是,当用户启用了 UNDO 功能时,会出现一个问题:消息被标记为 SENT,尽管消息并没有真正发送。如果您撤消,则邮件的 SENT 标签会被移除,而 DRAFT 标签会被添加。

到目前为止,我们无法在历史记录中找到任何记录实际发送发生的“事件”。

我们需要处理一条真正发送的消息,并尽快处理,尽可能避免等待今天可用的最大撤消时间(30 秒)。

关于我们如何实现这一点的任何提示?我们错过了什么?

【问题讨论】:

    标签: gmail-api


    【解决方案1】:

    你可以试试这个

    例如PHP代码:

    /**
    * Send Message.
    *
    * @param Google_Service_Gmail $service Authorized Gmail API instance.
    * @param string $userId User's email address. The special value 'me'
    * can be used to indicate the authenticated user.
    * @param Google_Service_Gmail_Message $message Message to send.
    * @return Google_Service_Gmail_Message sent Message.
    */
    function sendMessage($service, $userId, $message) {
    try {
    $message = $service->users_messages->send($userId, $message);
    print 'Message with ID: ' . $message->getId() . ' sent.';
    return $message;
    } catch (Exception $e) {
    print 'An error occurred: ' . $e->getMessage();
    }
    }
    

    您可以尝试获取$message->getId(),如果为空,则不发送,如果不为空,则已发送消息。

    if($message->getId() != null){
    //message has been seent
    
    your code
    }
    else{
    
    //message not been sent
    
    your code
    }
    

    或尝试Advanced search,如果两者都不起作用,请坚持您目前正在做的事情,因为目前User.history 没有这些功能。

    您可以在此链接中查看他如何使用高级搜索来检查 email is sent 高温

    【讨论】: