PHP Gmail API:可以发送电子邮件,但如何添加收件人电子邮件

时间:2015-02-26 15:39:40

标签: php gmail-api

我从https://github.com/google/google-api-php-client/

抓取了一个正在运行的gmail api php代码

我可以使用以下代码发送电子邮件,但没有收件人。在gmail发送的项目中我也可以看到发送的消息!

$mime = rtrim(strtr(base64_encode($_POST["message"]), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
$x = $service->users_messages->send("me", $msg);

如何添加收件人电子邮件地址?在几篇帖子中,我读到To应添加到标题中。

2 个答案:

答案 0 :(得分:0)

是的,在电子邮件中添加“收件人”,“抄送”或“密件抄送”标头,以便将电子邮件发送给人员。在你的情况下,$ _POST [“message”]字符串甚至更好的是使用标准php电子邮件库的一些电子邮件消息对象。

请参阅: https://developers.google.com/gmail/api/v1/reference/users/messages/send https://developers.google.com/gmail/api/guides/sending

答案 1 :(得分:0)

您应将原始电子邮件传递给\ Google_Service_Gmail_Message()类。 此原始消息应为base64编码的mime消息。您所做的几乎所有事情。

:您无需传递电子邮件正文(如电子邮件地址的内容),而是传递整个电子邮件-带标题。因此,不应传递$_POST["message"],而应传递一封准备好的电子邮件,其中包含所有必需的标头,包括TO,FROM等。这是一个示例:

From: sender@example.com
To: recipient@example.com
Subject: YOUR CUSTOM SUBJECT
Content-Type: text/plain; charset=UTF-8
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=5ae50a40c56153a0ca99d08aaf8f99d53f63981962d4f199b2339614636b

--5ae50a40c56153a0ca99d08aaf8f99d53f63981962d4f199b2339614636b
YOUR CUSTOM EMAIL CONTENT GOES HERE. Might be a mix of html and plain text.
--5ae50a40c56153a0ca99d08aaf8f99d53f63981962d4f199b2339614636b--

最好使用类似PHPMailer类的东西为您准备电子邮件的整个MIME版本,在这里您只需将所需的数据,主题,FROM,TO,正文等传递给公共方法,然后使用诸如$phpmailer->getSentMIMEMessage()这样的单个方法来请求MIME。