1

私は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);
4

2 に答える 2

1

base64_encode($message->toString());代わりに使用しました

(new Swift_Mime_ContentEncoder_Base64ContentEncoder)->encodeString($msg->toString());
于 2020-03-21T11:31:54.913 に答える