Gmail PHP API 发送电子邮件
Posted
技术标签:
【中文标题】Gmail PHP API 发送电子邮件【英文标题】:Gmail PHP API Sending Email 【发布时间】: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:
知道这里发生了什么吗?谢谢!
【问题讨论】:
您能否提供您发送的完整原始消息的示例?我很难发送电子邮件。 【参考方案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 编码(字母表略有不同)。
【讨论】:
以上是关于Gmail PHP API 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
PHP Gmail API:可以发送电子邮件但如何添加收件人电子邮件
Gmail API - PHP - 使用服务帐户发送电子邮件
使用 PHP 向使用 Gmail API 发送的电子邮件添加密件抄送
收件人地址需要代码”:400 在 Laravel PHP 中使用 Gmail API 发送电子邮件
如何在 PHP 中跟踪使用 GMAIL API 发送的电子邮件的已发送、已打开、已单击、已退回、已阻止等电子邮件传递状态