PHP Amazon SES v3 – 缺少必需的标题’来自’
发布时间:2020-12-13 22:11:34 所属栏目:PHP教程 来源:网络整理
导读:我必须将我的 PHP Amazon SES API从版本v2升级到版本v3.我在v2中使用的相同代码在v3中不起作用. 遵循以下代码: //Send the message (which must be base 64 encoded):$ses = new SesClient([ 'credentials' = new Credentials( $this-connection-getUsernam
我必须将我的
PHP Amazon SES API从版本v2升级到版本v3.我在v2中使用的相同代码在v3中不起作用.
遵循以下代码: //Send the message (which must be base 64 encoded): $ses = new SesClient([ 'credentials' => new Credentials( $this->connection->getUsername(),$this->connection->getPassword() ),'region' => $this->connection->getServer(),'version' => '2010-12-01' ]); // the body message generated by PHP Mailer: $message = "Date: Tue,6 Sep 2016 16:46:35 -0300n" . "To: some@email.comn" . "From: my_registered_email@at.amazon.comn" . "Reply-To: my_registered_email@at.amazon.comn" . "Subject: Email Subjectn" . "Message-ID: <3a1db7d5ae6b610cab5898f0be4a00a3@machine-id>n" . "X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer)n" . "MIME-Version: 1.0n" . "Content-Type: multipart/alternative;n" . " boundary="b1_3a1db7d5ae6b610cab5898f0be4a00a3"n" . "Content-Transfer-Encoding: 8bitn" . "n" . "This is a multi-part message in MIME format.n" . "n" . "--b1_3a1db7d5ae6b610cab5898f0be4a00a3n" . "Content-Type: text/plain; charset=us-asciin" . "n" . "html text bodyOKn" . "n" . "n" . "--b1_3a1db7d5ae6b610cab5898f0be4a00a3n" . "Content-Type: text/html; charset=us-asciin" . "n" . "<h1>html text body</h1>OKn" . "n" . "n" . "n" . "--b1_3a1db7d5ae6b610cab5898f0be4a00a3--n"; $ses->sendRawEmail( [ 'RawMessage' => [ 'Data' => base64_encode($message),] ] ); 当我运行代码时,我收到了错误: PHP Fatal error: Uncaught exception 'AwsSesExceptionSesException' with message 'Error executing "SendRawEmail" on "https://email.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> <Error> <Type>Sender</Type> <Code>InvalidParameterValue (client): Missing required header 'From'. - <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> <Error> <Type>Sender</Type> <Code>InvalidParameterValue</Code> <Message>Missing required header 'From'.</Message> </Error> <RequestId>9ea0eaa9-746a-11e6-a6cb-21af912ef7d9</RequestId> </ErrorResponse> ' 但是这段代码适用于API v2. 这有什么不对? 解决方法
我深入研究了AWS SDK源代码,并意识到我不需要对消息进行编码.
所以,我删除了base64_encode函数,现在一切正常! 最终的代码是: (...) $ses->sendRawEmail( [ 'RawMessage' => [ 'Data' => $message,// <-- Removed base64_encode from here ] ] ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |