php - Gmail PHP API 发送电子邮件

标签 php gmail-api

我正在尝试通过 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:

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

最佳答案

问题,正如 Eric 所说,是 url safe 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制作这些,或者如果您可以自己制作纯文本。

关于php - Gmail PHP API 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694923/

相关文章:

node.js - 使用 Gmail API Node.js 客户端发送大附件 (> 5 MB)

PHP exec 启动带参数的 cmd 窗口

javascript - AngularJS 按 ID 过滤

php - 如何使用 php 和 mysql 排列数字而不重复

java - 在 Android 中使用 Gmail API 和 OAuth2 检查来自 Gmail 的新电子邮件

javascript - 使用 node.js Gmail API 发送现有草稿

php - 在 WHERE 子句中使用 SELECT IF

php - 使用 PHP 创建 XML 文件并将其保存到服务器

php - 从 Google Mail API 解码 PHP 中的邮件附件

gmail - 如何使用 Gmail API 访问我拥有的 gmail 帐户?