【问题标题】:Gmail PHP API Sending EmailGmail PHP API 发送电子邮件
【发布时间】:2014-10-30 22:35:15
【问题描述】:

我正在尝试通过 Gmail PHP API (https://developers.google.com/gmail/api/v1/reference/users/messages/send) 发送电子邮件。在我发送消息之前,一切似乎都正常。我的代码是:

private function createMessage($email) {
    $message = new Google_Service_Gmail_Message();
     $message->setRaw(strtr(base64_encode($email), '+/=', '-_,'));      // $email is a raw email data string
    return $message;
}

public function sendMessage($userID, $email) {
    try {
        $msg = $this->createMessage($email);
        $this->service->users_messages->send($userID, $msg);
    } catch (Exception $e) {
        print 'An error occurred: ' . $e->getMessage();
    }
}

代码在该行中断:

$this->service->users_messages->send($userID, $msg);

出现错误:

An error occurred: Error calling POST https://www.googleapis.com/gmail/v1/users/myemailaddress@gmail.com/messages/send: (400) Invalid value for ByteString:

知道这里发生了什么吗?谢谢!

【问题讨论】:

  • 您能否提供您发送的完整原始消息的示例?我很难发送电子邮件。

标签: php gmail-api


【解决方案1】:

问题,就像 Eric 所说,是 url 安全 base 64。您需要将 url 转换更改为更像这样的东西:

$message_object = new Google_Service_Gmail_Message();
$encoded_message = rtrim(strtr(base64_encode("PUT MESSAGE HERE"), '+/', '-_'), '=');
$message_object->setRaw($encoded_message);

还要确保使用有效的mail mime,因此“在此处输入消息”实际上不起作用。您需要包含有效的标题,如主题等。有some various PHP libraries 可以制作这些,或者您可以自己制作纯文本。

【讨论】:

    【解决方案2】:

    您设置为“原始”的电子邮件字符串需要 url 安全 base64 编码(字母表略有不同)。

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 2017-05-25
      • 2014-08-27
      • 2018-08-20
      • 2018-01-26
      • 2014-09-16
      • 2019-01-19
      • 2019-10-16
      • 2015-01-02
      相关资源
      最近更新 更多