我正在尝试使用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"
对如何调试有什么想法吗?
感谢你能提供的任何帮助。
马克
发现了问题。我希望这能帮助其他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只向经过验证的用户发送电子邮件。 如何将激活链接发送到任何未经验证的电子邮件地址?