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