La dirección de correo electrónico de Amazon SES no está verificada

Estoy comenzando con los servidores de Amazon y comencé a estudiar sobre SES. Estoy usando asp.net C # e hice mis tutoriales basados ​​en código. Ya revisé el dominio y también revisé los correos electrónicos en los que ejecutaré la prueba.

De modo que cuando ejecuto mi código genera el siguiente mensaje de error: Transacción fallida. La respuesta del servidor fue: Mensaje rechazado: la dirección de correo electrónico no está verificada.

No sé de qué se trata porque seguí todos los pasos posibles, aún no se ha ordenado el detalle de la liberación del acceso a la producción.

Pero creo que no puede ser, todavía estoy probando el servicio.

Mi código

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("
O e-mail não foi enviado.
"); Response.Write("Olhao erro: " + ex.Message); } } catch (Exception ex) { Response.Write("Error message: " + ex.Message); } }

Su código indica que está tratando de enviar por medio de us-west-2 . ¿Ha solicitado acceso de producción en esa región y está verificada su dirección From ? El acceso a la producción para Amazon SES es independiente de la región y debe solicitarlo por separado para cada región .

Si no tiene acceso de producción, debe asegurarse de que se verifiquen las direcciones From y A. La consola de Amazon SES listará sus direcciones de correo electrónico verificadas y dominios verificados para us-west-2 . El blog de Amazon SES contiene orientación adicional sobre cómo puede configurarlo en us-west-2 .

Una forma rápida de saber si no tiene acceso de producción: inicie sesión en el panel de la consola de Amazon SES y mostrará un cartel azul con el siguiente texto en la parte superior de la página con un botón para solicitar acceso de producción:

Su cuenta de Amazon SES tiene acceso de “espacio aislado” en la región US West (Oregón). Con el acceso a la zona de pruebas, solo puede enviar correos electrónicos al simulador de buzones de Amazon SES y a direcciones de correo electrónico o dominios que haya verificado. Aprende más.

¿No puede encontrar la configuración de su cuenta existente? Su cuenta puede estar configurada en una región AWS diferente. Intente cambiar las regiones en la esquina superior derecha de la consola.

¿Todavía estás corriendo en modo ‘sandbox’? Si es así, solo puede enviar correos electrónicos a direcciones previamente verificadas.

De Amazon:

La dirección de correo electrónico no está verificada: su cuenta está en la zona de pruebas y una de las direcciones de correo electrónico del destinatario no se ha verificado. Esto podría aplicarse a direcciones de “Remitente”, “Ruta de retorno” o “De”.

Si no ha solicitado acceso de producción a Amazon SES, debe verificar todas las direcciones de correo electrónico de los destinatarios, excepto los destinatarios proporcionados por el simulador de buzones de Amazon SES. También debe verificar su propia dirección “De”. Para obtener más información, vea Verificar direcciones de correo electrónico y dominios en Amazon SES y Probar el envío de correo electrónico de Amazon SES.

Más información aquí: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/ses-errors.html

Después de semanas de perder el tiempo, finalmente resolví esto. Entonces, si está fuera de la caja de arena, ha verificado su dominio y su dirección de correo electrónico FROM, tenga cuidado con la región predeterminada. Como ya sabrá (solo una suposición), estar fuera de la zona de pruebas es específico de la región (así como el correo electrónico y el dominio verificados).

Mi problema era que yo era eso en todas las permutaciones de cómo enviar un correo electrónico con AWS SDK Java, no pude especificar una región explícita y mi cuenta de EE. UU. Estaba configurando por defecto la región en USA West. Mi región donde hice toda la verificación (y estaba fuera del Sandbox) fue Europa Oeste (email-smtp.eu-west-1.amazonaws.com). Además, no olvide utilizar las credenciales adecuadas para la API de Amazon SES, que son las claves de acceso de AWS. En mi caso (a continuación) esas claves están en un archivo, en el classpath con dos pares clave-valor:

 accessKey = AKI... secretKey = AsVyp... 

Y aquí está el código:

 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()); } } 

}

También verifique dos veces para asegurarse de que no se está ejecutando en el modo de producción y / o asegúrese de que su dirección de envío a se haya verificado en el modo de espacio aislado.

Limitaciones del modo AWS SES Sandbox:

  • Solo puede enviar correos al simulador de buzones de Amazon SES y a direcciones de correo electrónico y dominios verificados.
  • Solo puede enviar correos desde direcciones de correo electrónico y dominios verificados.
  • Puede enviar un máximo de 200 mensajes por período de 24 horas.
  • Amazon SES puede aceptar un máximo de un mensaje de su cuenta por segundo.

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html