当前位置: 首页 > 知识库问答 >
问题:

AWS ses sendEmail php sdk错误电子邮件地址未验证

卫华奥
2023-03-14

我正在尝试使用php sdk通过AWS SES发送电子邮件。请注意,我可以通过aws CLI发送消息-没问题,并且我可以使用身份管理区域下的域和电子邮件区域从SES控制台发送电子邮件。此外,域和电子邮件都已验证并显示在身份管理区域中。

我正在使用PHPSDK中的示例代码。我确实编辑了该地区,因为我的电子邮件和域名已经过验证,并且我在美国西部2地区以外的地区运营。

<?php
/**
 * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * This file is licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License. A copy of
 * the License is located at
 *
 * http://aws.amazon.com/apache2.0/
 *
 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */
require 'vendor/autoload.php';

use Aws\Ses\SesClient; 
use Aws\Exception\AwsException;

$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-west-2'
]);

$html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' .
    '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' .
    'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' .
    'AWS SDK for PHP</a>.</p>';
$subject = 'Amazon SES test (AWS SDK for PHP)';
$plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.';
$sender_email = 'email_address';
$recipient_emails = ['email_address'];
$char_set = 'UTF-8';
$configuration_set = 'ConfigSet';

try {
    $result = $SesClient->sendEmail([
        'Destination' => [
            'ToAddresses' => $recipient_emails,
        ],
        'ReplyToAddresses' => [$sender_email],
        'Source' => $sender_email,
        'Message' => [

            'Body' => [
                'Html' => [
                    'Charset' => $char_set,
                    'Data' => $html_body,
                ],
                'Text' => [
                    'Charset' => $char_set,
                    'Data' => $plaintext_body,
                ],
            ],
            'Subject' => [
                'Charset' => $char_set,
                'Data' => $subject,
            ],
        ],
        // If you aren't using a configuration set, comment or delete the
        // following line
        'ConfigurationSetName' => $configuration_set,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

我通过~/.aws/credential文件提供SDK的凭据,该文件包含访问ID密钥和密钥。这是AWS CLI访问的同一文件,因此凭据似乎是正确的,并且CLI可以访问。

[default]
aws_access_key_id = AKIA2PK........Z72J3
aws_secret_access_key = co9r41j/i+QTrsA7244xG........KPH1LyBn34b

我在上面添加了“…”以保护我的访问和秘密访问密钥。

我收到以下错误,表明我的电子邮件未经验证。但是它有!另外,我没有处于沙箱模式。

在上执行“发送电子邮件”时出错https://email.us-west-2.amazonaws.com“AWS HTTP错误:客户端错误:POSThttps://email.us-west-2.amazonaws.com导致400错误请求响应:发件人MessageReje(被截断的…)message被拒绝(客户端):未验证电子邮件地址。以下身份未通过签入区域US-WEST-2:msellers@ranchmed.com-发件人MessageRejected未验证电子邮件地址。以下身份未通过US-WEST-2地区的签入:msellers@ranchmed.comdbbb0c1d-5493-4205-9257-a2fbb81eb5d9未发送电子邮件。错误消息:电子邮件a未验证地址。以下标识在区域US-WEST-2中的签入失败:msellers@ranchmed.com"

对如何调试有什么想法吗?

感谢你能提供的任何帮助。

马克

共有1个答案

郑旭
2023-03-14

发现了问题。我希望这能帮助其他aws sdk用户。sdk凭据提供程序找到了Web服务器用户的.aws/credentials文件,而不是从我的主目录中找到的。在我的例子中,查看了文件/var/cache/nginx/.aws/credentials,找到了一些为以前的测试目的定义的凭据。

教训是,请注意aws sdk如何查找凭据文件。如果web服务器用户设置了凭据文件,则它将优先使用该凭据文件,而不是位于$HOME/.aws/credentials文件中的凭据文件。

 类似资料:
  • 我有一个亚马逊SES连接设置,目前处于沙盒模式。 我有我的电子邮件地址,我用的是我的真实地址,但对于这篇文章,我们称之为。它在SES中得到验证,在电子邮件标签上,它旁边写着“已验证”。 我有一个节点应用程序,可以通过nodeEmailer发送邮件 然后我把它和这个一起寄出去。运输机。sendMail,所有电子邮件地址都相同 当我尝试发送电子邮件时(发送至和发送自同一地址,并在SES上验证) 发送时

  • 我想使用亚马逊的简单电子邮件服务发送电子邮件。 我验证了我的域名以及我想发送的电子邮件地址。 对于两者,它都表示。 现在,当我使用AWS控制台的发送测试电子邮件向myemail@outlook.com发送测试电子邮件时,我只收到错误消息: 电子邮件地址未验证。以下身份在区域EU-WEST-1中检查失败:myemail@outlook.com(请求ID: 9fb78de1-2673-11e6-bbb

  • 新客户注册时,我尝试使用AWS-SES发送电子邮件。 但我犯了一些这样的错误 电子邮件地址未经验证。以下身份未通过US-EAST-1区域的登记:mathuk22@gmail.com(请求ID:2278b8eb-544e-11e9-bab8-536962476bb7) 注意:我不验证电子邮件ID在我的 如果没有验证电子邮件,我如何发送电子邮件?

  • 问题内容: 有谁知道如何在Swift中验证电子邮件地址?我发现此代码: 但我无法将其翻译为Swift。 问题答案: 我会用: 对于低于3.0的Swift版本: 对于低于1.2的Swift版本:

  • 我想使用Google表单填充Google电子表格。其中一个字段是电子邮件地址,我需要对照我们组织的电子邮件列表来验证这一点--换句话说,强制人们使用有效的和现有的电子邮件地址。 我们的组织使用谷歌应用程序。该表单将由在我们组织中的用户创建,并且只有来自我们组织/域的电子邮件地址才被认为是有效的。

  • 我正在开发PHP应用程序,注册后,使用Amazon SES(简单电子邮件服务)向注册的电子邮件地址发送激活邮件。 但是SES只向经过验证的用户发送电子邮件。 如何将激活链接发送到任何未经验证的电子邮件地址?