dongshi3818 2017-03-24 14:31
浏览 79

如何通过laravel发送电子邮件?

I use a function for send email, and this contains html for send.I searched for documentation and i try installed "guzzlehttp/guzzle": "~5.3|~6.0" and "aws/aws-sdk-php": "~3.0" and this is my function:

function enviarCorreo(Request $request){
    $myArray =$request->get('htmls');
    $registers =json_decode($myArray,true);

    foreach ($registers as $value) {
        $client = SesClient::factory(array(
                'version'=> 'latest',
                'region' => 'us-east-1',
                'credentials' => [
        'key'    => 'something',
        'secret' => 'something',
    ]
        ));

    $request = array();
    $request['Source'] = "info@tenebit.com.co";
    $request['Destination']['ToAddresses'] =  array("sebastian.moncada@tenebit.com.co");
    $request['Message']['Subject']['Data'] = "Cambio Precio";
    $request['Message']['Body']['Text']['Data'] = "hola";

    $client->sendEmail($request);
    }
}

When i execute this function, i get error:

Error executing "SendEmail" on "https://email.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDo (truncated...)
SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

The Canonical String for this request should have been
'POST
/

aws-sdk-invocation-id:6e193a6cd1a8f79ff9431f8a578fd33c
aws-sdk-retry:0/0
host:email.us-east-1.amazonaws.com
x-amz-date:20170323T234114Z

aws-sdk-invocation-id;aws-sdk-retry;host;x-amz-date
b4a0fc6dfb3b8b956012d7ea58727e0f2674c24ecec5ca7cc7aa58151169fc2e'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20170323T234114Z
20170323/us-east-1/ses/aws4_request
90bda171b5066152e79af1168f8a107aa8f1255f38d1fe261efb757173b0e81c'
- <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

The Canonical String for this request should have been
'POST
/

aws-sdk-invocation-id:6e193a6cd1a8f79ff9431f8a578fd33c
aws-sdk-retry:0/0
host:email.us-east-1.amazonaws.com
x-amz-date:20170323T234114Z

aws-sdk-invocation-id;aws-sdk-retry;host;x-amz-date
b4a0fc6dfb3b8b956012d7ea58727e0f2674c24ecec5ca7cc7aa58151169fc2e'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20170323T234114Z
20170323/us-east-1/ses/aws4_request
90bda171b5066152e79af1168f8a107aa8f1255f38d1fe261efb757173b0e81c'
</Message>
</Error>
<RequestId>3487b258-1022-11e7-b9c4-8fda0cb028e9</RequestId>
</ErrorResponse>

AND

ClientException in RequestException.php line 111:
Client error: `POST https://email.us-east-1.amazonaws.com` resulted in a `403 Forbidden` response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDo (truncated...)

I appreciate your answers on how to solve it.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 易语言把MYSQL数据库中的数据添加至组合框
    • ¥20 求数据集和代码#有偿答复
    • ¥15 关于下拉菜单选项关联的问题
    • ¥20 java-OJ-健康体检
    • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
    • ¥15 使用phpstudy在云服务器上搭建个人网站
    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况