3

修正するのは簡単なはずですが、機能させることができません。

send_emailの API リファレンスを 読みました。これに関連する他のスレッド (ここおよび他のサイト) を読みました。コードサンプルを使用して、パラメーター配列が適切にネストされていることを確認しましたが(私が把握できる限り)、すべてが「予期しないリスト要素の終了」を示します

function amazonSesEmail($to, $subject, $message)
{
    $amazonSes = new AmazonSES(); //

    $response = $amazonSes->send_email('my_ses_confirmed_email@gmail.com',
        array('ToAddresses' => $to),
        array(
            'Subject.Data' => $subject,
            'Body.Text.Data' => $message,
        )
    );

    return $response;
}

私はまた、参照構造に従うための必死の試みで、このような厄介なことを試みました:

$aws_reply = $aws_ses->send_email(  $fromEmailAddress, 
            array('ToAddresses' => 'same@gmail.com'),
                array(
                 array(  'Subject' => array('Data' => 'New Request '),
                         'Body' =>    array( 'Text' => array('Data' => 'New Request '))
                       )  
               )
);

すべての場合において、print_r($response) の詳細は次のとおりです。

CFResponse Object
(
    [header] => Array
        (
            [x-amzn-requestid] => xxxx-xxxxx
            [content-type] => text/xml
            [content-length] => 280
            [date] => Fri, 16 Dec 2011 03:24:07 GMT
            [_info] => Array
                (
                    [url] => https://xxxxx/
                    [content_type] => text/xml
                    [http_code] => 400
                    [header_size] => 166
                    [request_size] => 1088
                    [filetime] => -1
                    [ssl_verify_result] => 0
                    [redirect_count] => 0
                    [total_time] => 0.349242
                    [namelookup_time] => 0.156135
                    [connect_time] => 0.189468
                    [pretransfer_time] => 0.28083
                    [size_upload] => 185
                    [size_download] => 280
                    [speed_download] => 801
                    [speed_upload] => 529
                    [download_content_length] => 280
                    [upload_content_length] => 185
                    [starttransfer_time] => 0.349204
                    [redirect_time] => 0
                    [certinfo] => Array
                        (
                        )

                    [method] => POST
                )

            [x-aws-stringtosign] => Fri, 16 Dec 2011 03:24:06 GMT68492574-F715-4AE3-B153-9446AE80866D
            [x-aws-request-headers] => Array
                (
                    [Content-Length] => 185
                    [Content-MD5] => 9+iobwTmkId+4ZmGt+6CDw==
                    [Content-Type] => application/x-www-form-urlencoded; charset=utf-8
                    [Date] => Fri, 16 Dec 2011 03:24:06 GMT
                    [Host] => xxxxxxxxxx.com
                    [X-Amz-Nonce] => xxx
                    [X-Amzn-Authorization] => AWS3-HTTPS AWSAccessKeyId=xxx,Algorithm=HmacSHA256,SignedHeaders=Content-Length;Content-MD5;Content-Type;Date;Host;X-Amz-Nonce,Signature=xxxx
                )

            [x-aws-body] => Action=SendEmail&Destination.ToAddresses=xxxx%40gmail.com&Message.Body.Text.Data=test%20body&Message.Subject.Data=test%20subject&Source=xxxxx%40gmail.com&Version=2010-12-01
        )

    [body] => CFSimpleXML Object
        (
            [@attributes] => Array
                (
                    [ns] => http://xxxx
                )

            [Error] => CFSimpleXML Object
                (
                    [Type] => Sender
                    [Code] => MalformedInput
                    [Message] => Unexpected list element termination
                )

            [RequestId] => xxxxx
        )

    [status] => 400
)

私はこれについて再び髪を引き裂いています。それは非常にまっすぐである必要がありますが、フォーマットの要件を満たすことができないようです。以前にこれを行ったことのある人からの意見は大歓迎です!

4

3 に答える 3

9

あなたが報告していたこの問題も今日ありました。少しいじった後、次の構成がaws php sdkで機能することがわかりました:sdk-1.5.3:

 $response = $ses->send_email($fromEmail,
      array('ToAddresses' => array($toEmail)),
           array(
                'Subject.Data' => $subject,
                'Body.Html.Data' => $content,
           )
 );

あなたと私の違いを見て...

 $response = $amazonSes->send_email('my_ses_confirmed_email@gmail.com',
 array('ToAddresses' => $to), // problem is here
      array(
           'Subject.Data' => $subject,
           'Body.Text.Data' => $message,
      )
 );

どちらの例でも$to、配列に含まれていない「toaddress」を配置します。

遅くなるよりはましだ!

于 2012-04-09T14:02:09.583 に答える
0

その方法は機能しませんでしたが、php PEAR パッケージの MAIL 拡張機能を使用して、php から SES 経由で電子メールを送信できました。AWS ダッシュボードで、SMTP 認証を使用するように SES アカウントをセットアップできるので、それを行ったところ、SES で smtp 経由で期待どおりにメールを送信できるようになりました。

これにより、他の誰かが数時間と頭痛の種を救うことを願っています

于 2011-12-16T20:53:15.340 に答える
0

toアドレスのリストをフォーマットする方法に関係していると思います。複数の受信者で動作させるのに苦労しましたが、1 つの ToAddress だけで動作させるのは非常に難しいことでもあります...

これは少し役立つかもしれません: Amazon SES を使用して複数の受信者に E メールを送信する

を使用CFComplexType::map()すると、物事が SES の適切な構造にあることが保証されます。

于 2012-01-02T22:00:10.017 に答える