Адрес электронной почты Amazon SES не проверен
Я начинаю с серверов amazon и начал изучать SES. Я использую asp.net C # и сделал мои учебники на основе кода. Я уже проверил домен, а также проверил электронные письма, в которых я буду запускать тест.
таким образом, когда я запускаю свой код, он генерирует следующее сообщение об ошибке: транзакция не удалась. Ответ сервера: сообщение отклонено: адрес электронной почты не проверен.
Я не знаю, что это потому, что я за все возможные меры, один подробно пока не заказан выпуск access to production.
но я думаю, что этого не может быть, я все еще тестирую сервис.
Код
public void enviarSES02()
{
try
{
const String FROM = "verified email address";
const String TO = "verified email address";
const String SUBJECT = "Amazon SES test (SMTP interface accessed using C#)";
const String BODY = "This email was sent through the Amazon SES SMTP interface by using C#.";
const String SMTP_USERNAME = "my username"; // Replace with your SMTP username.
const String SMTP_PASSWORD = "my password"; // Replace with your SMTP password.
const String HOST = "email-smtp.us-west-2.amazonaws.com";
const int PORT = 25;//already tried with all recommended ports
SmtpClient client = new SmtpClient(HOST, PORT);
client.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD);
client.EnableSsl = true;
try
{
Console.WriteLine("Attempting to send an email through the Amazon SES SMTP interface...");
client.Send(FROM, TO, SUBJECT, BODY);
Response.Write("ENVIADO");
}
catch (Exception ex)
{
Response.Write("<br>O e-mail não foi enviado.<br>");
Response.Write("Olhao erro: " + ex.Message);
}
}
catch (Exception ex)
{
Response.Write("Error message: " + ex.Message);
}
}
4 ответов
ваш код показывает, что вы пытаетесь отправить через us-west-2
. Вы запросили производственный доступ в этом регионе и ваш From
адреса проверенные? Производственный доступ для Amazon SES не зависит от региона, и вам нужно запросить его отдельно для каждого региона.
если у вас нет производственного доступа, вы должны убедиться, что оба From
и To
адреса проверяются. Консоль Amazon SES отобразит ваш подтвержденный адрес электронной почты адреса и проверенных доменов на us-west-2
. Блог Amazon SES имеет дополнительные указания о том, как вы можете настроить в us-west-2
.
быстрый способ сказать, если у вас нет доступа производства: войдите в панель управления консоли Amazon SES и он отобразит синий баннер со следующим текстом в верхней части страницы с кнопкой для запроса производственного доступа:
ваша учетная запись Amazon SES имеет " песочницу" доступ в регион us West (Орегон.) С sandbox access вы можете отправлять электронную почту только на Amazon Симулятор почтовых ящиков SES и адреса электронной почты или домены, которые у вас есть верифицированный. Учить больше.
не удается найти существующие настройки учетной записи? Ваша учетная запись может быть настроена в другом регионе AWS. Попробуйте переключить области в правом верхнем углу угол консоли.
вы случайно все еще работаете в режиме "песочницы"? Если вы, вы можете отправлять электронные письма только на адреса, которые были предварительно проверены.
От Amazon:
адрес электронной почты не подтвержден - ваша учетная запись находится в песочнице и один адреса электронной почты получателя не были проверены. Это может применитесь к адресам" отправитель"," обратный путь "или" от".
если вы не запросили производственный доступ к Amazon SES, Вы должны проверить каждый адрес электронной почты получателя за исключением получателей предоставлено симулятором почтовых ящиков Amazon SES. Вы также должны проверить свой собственный адрес. Дополнительные сведения см. В разделе Проверка электронной почты Адреса и домены в Amazon SES и тестирование электронной почты Amazon SES Отправка.
дополнительная информация здесь:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/ses-errors.html
после нескольких недель возни, я, наконец, разобрался в этом. Поэтому, если вы вышли из песочницы, проверили свой домен и свой адрес электронной почты, остерегайтесь региона по умолчанию. Как вы уже знаете (только догадка), выход из песочницы зависит от региона (а также от проверенной электронной почты и домена).
моя проблема заключалась в том, что во всех перестановках отправки электронной почты с помощью AWS SDK Java я не смог указать явный регион, и моя учетная запись в США была дефолт региона на запад США. Мой регион, где я сделал все проверки (и был из песочницы), был запад Европы (email-smtp.eu-west-1.amazonaws.com). Также не забудьте использовать соответствующие учетные данные для API Amazon SES, которые являются ключами доступа AWS. В моем случае (ниже) эти ключи находятся в файле, в пути к классам с двумя парами ключ-значение:
accessKey = AKI...
secretKey = AsVyp...
и вот код:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Arrays;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.simpleemail.AWSJavaMailTransport;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
import com.amazonaws.services.simpleemail.model.ListVerifiedEmailAddressesResult;
import com.amazonaws.services.simpleemail.model.VerifyEmailAddressRequest;
//import com.amazonaws.services.ec2.model.Region;
import com.amazonaws.services.simpleemail.*;
import com.amazonaws.services.simpleemail.model.*;
import com.amazonaws.regions.*;
public class AmazonSESSample {
static final String FROM = "john@myappsdomain.com";
static final String TO = "me@mypersonalaccount.com"; //
static final String BODY = "This email was sent through Amazon SES by using the AWS SDK for Java.";
static final String SUBJECT = "Amazon SES test (AWS SDK for Java)";
public static void main(String[] args) throws IOException {
// Construct an object to contain the recipient address.
Destination destination = new Destination().withToAddresses(new String[]{TO});
// Create the subject and body of the message.
Content subject = new Content().withData(SUBJECT);
Content textBody = new Content().withData(BODY);
Body body = new Body().withText(textBody);
PropertiesCredentials credentials = new PropertiesCredentials(
AmazonSESSample.class
.getResourceAsStream("AwsCredentials.properties"));
Message message = new Message().withSubject(subject).withBody(body);
SendEmailRequest request = new SendEmailRequest().withSource(FROM).withDestination(destination).withMessage(message);
try
{
AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(credentials);
Region REGION = Region.getRegion(Regions.EU_WEST_1);
client.setRegion(REGION);
client.sendEmail(request);
System.out.println("Email sent!");
}
catch (Exception ex)
{
System.out.println("The email was not sent.");
System.out.println("Error message: " + ex.getMessage());
}
}
}
также дважды проверьте, чтобы убедиться, что вы не работаете в рабочем режиме и/или убедитесь, что ваша отправка по адресу проверена в режиме песочницы.
ограничения режима песочницы AWS SES:
- вы можете отправлять почту только в симулятор почтовых ящиков Amazon SES и на проверенные адреса электронной почты и Домены.
- вы можете отправлять почту только с проверенных адресов электронной почты и доменов.
- вы можете отправить максимум 200 сообщений в 24 часа период.
- Amazon SES может принимать не более одного сообщения от вашего аккаунта в секунду.
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html