私はSwift_Message
メッセージを構築し、メッセージSwift_Mime_ContentEncoder_Base64ContentEncoder
をエンコードするために使用しています。次に、エンコードされたメッセージGoogle_Service_Gmail_Message
をメソッドで設定してい->setRaw()
ます。
私はかなり長い間これでメールを送信してきましたが、以前は正常に機能していました。昨日から機能しなくなり、エラーメッセージは次のように表示されます
"error": {
"code": 400,
"message": "Invalid value at 'message.raw' (TYPE_BYTES), Base64 decoding failed for \"[base64 encoded message with CRLF after every 76th character]\"",
"errors": [
{
"message": "Invalid value at 'message.raw' (TYPE_BYTES), Base64 decoding failed for \"[base64 encoded message with CRLF after every 76th character]\"",
"reason": "invalid"
}
],
"status": "INVALID_ARGUMENT"
}
CRLFを削除すると機能します。何かご意見は?
参照: https://www.rfc-editor.org/rfc/rfc2822#section-2.1.1
私のコード
$msg = new Swift_Message();
$msg->setCharset('UTF-8')
->addTo(/*recipient*/)
->setSubject(/*sbject*/)
->addPart(/*text content*/, "text/plain")
->addPart(/*html content*/, "text/html");
$base64 = (new Swift_Mime_ContentEncoder_Base64ContentEncoder)->encodeString($msg->toString());
$base64_msg = rtrim(strtr($base64, '+/', '-_'), '=');
$mailer = $this->_getGmailService();// new Google_Service_Gmail(new Google_Client())
$message = new Google_Service_Gmail_Message();
$message->setRaw($base64_msg);
$message->setThreadId($threadId);
$mailer->users_messages->send('me', $message);