繁体   English   中英

Gmail PHP API发送电子邮件

[英]Gmail PHP API Sending Email

我正在尝试通过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安全基础64.你需要将url转换更改为更像这样的东西:

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

还要确保使用有效的邮件mime ,因此“PUT MESSAGE HERE”在现实中不起作用。 你需要包含像主题等有效的标题。有一些不同的PHP库来制作这些,或者你可以用纯文本自己制作。

您设置为'raw'的电子邮件字符串需要是url safe base64编码(字母略有不同)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM