Gmail文档说我需要create a MIME email messages compliant with RFC 2822
. - https://developers.google.com/gmail/api/guides/sending
鉴于我只有一个"收件人"地址,主题和纯文本正文 - 使用SwiftMailer(或替代包)实现此目的的最简单方法是什么?
如果是这样,我如何确保 SwiftMailer 的输出适合 Gmail REST API?
我将使用此函数对其进行 Base64URL 编码:
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
SwiftMailer 只是工作:
//create MIME message using SwiftMailer
$msg = Swift_Message::newInstance()
->setTo(array($data['email']))
->setSubject($data['subject'])
->setBody($data['message']);
//base64URL encode message
$msg = base64url_encode($msg);
$client = new Google_Client();
$client->setAccessToken($_COOKIE['access_token']);
$service = new Google_Service_Gmail($client);
$message = new Google_Service_Gmail_Message();
$message->setRaw($msg);
try {
$message = $service->users_messages->send('me', $message);
print 'Message with ID: ' . $message->getId() . ' sent.';
return $message;
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
试试这个:
$mime = $message->toString();
然后
$msg = base64url_encode($msg);