2012-01-18 19 views
14

estamos tratando de configurar la primavera JavaMailSender para trabajar con el servicio SES de Amazon a través de SMTP, pero que están recibiendo este error:¿Cómo se configura Spring JavaMailSender para SES usando SMTP?

javax.mail.MessagingException: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 

Ésta es nuestra configuración:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="email-smtp.us-east-1.amazonaws.com" /> 
    <property name="port" value="465" /> 
    <property name="username" value="..." /> 
    <property name="password" value="..." /> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.smtp.auth">true</prop> 
      <prop key="mail.smtp.ssl.enable">true</prop> 
     </props> 
    </property> 
</bean> 

Cualquier idea lo que podría ser mal ? Gracias por adelantado.

PD: Ya hemos intentado la solución aquí: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 sin ningún tipo de suerte.

Respuesta

35

Basado en respuesta @GuCo: Esta es la configuración completa que trabajó para mí:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="email-smtp.us-east-1.amazonaws.com" /> 
    <property name="port" value="465" /> 
    <property name="protocol" value="smtps" /> 
    <property name="username" value="..." /> 
    <property name="password" value="..." /> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.smtps.auth">true</prop> 
      <prop key="mail.smtp.ssl.enable">true</prop> 
      <prop key="mail.transport.protocol">smtps</prop> 
     </props> 
    </property> 
</bean> 

No se olvide de la configuración <property name="protocol" value="smtps" />, o de lo contrario los javaMailProperties no se toman en consideración.

+0

Esta es una buena respuesta. Solo agregaría que, si está intentando configurar el protocolo desde su clase Java, querrá usar 'mailSender.setProtocol (" smtps ")' – eugene

14

Acabo de encontrar el mismo problema. En realidad, he intentado resolverlo hace unas semanas y se quedó atascado ...

Lo primero que hice, para identificar el problema: activar el modo de depuración para el correo API

<props> 
    ... 
    <prop key="mail.debug">true</prop> 
</props> 

Esto me mostró, que en realidad no utiliza SSL

DEBUG SMTP: trying to connect to host "email-smtp.us-east-1.amazonaws.com", port 465, isSSL false 

Mi colega señaló, para incluir otra propiedad de correo para utilizar SSL realmente

<props> 
    ... 
    <prop key="mail.transport.protocol">smtps</prop> 
    ... 
</props> 

Después de agregar este valor, el valor "isSSL" cambió a verdadero, pero señaló otro error. No utiliza la autenticación más, debido al cambio del protocolo, que puede ser fijado por, por supuesto, el cambio de la propiedad

<prop key="mail.smtp.auth">true</prop> 

a

<prop key="mail.smtps.auth">true</prop> 

Después de ese viaje, finalmente funcionó para mí :-)

la esperanza de que era útil ...

Sólo para resumir las propiedades correctas:

<props> 
    <prop key="mail.smtps.auth">true</prop> 
    <prop key="mail.smtp.ssl.enable">true</prop> 
    <prop key="mail.transport.protocol">smtps</prop> 
</props> 
+0

Gracias por su respuesta. Lo probé y sigo viendo esto: 'DEPURAR SMTP: tratando de conectarse al host" email-smtp.us-east-1.amazonaws.com", el puerto 465, isSSL false' Mi conf se parece a esto ahora: ' ... \t \t \t \t \t \t true \t \t \t true \t \t \t SMTPS \t \t \t true \t \t \t ' alguna sugerencia? – rreyes1979

2

Este código está trabajando para mí:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="email-smtp.us-east-1.amazonaws.com" /> 
      <!--Obtaining Your Amazon SES SMTP Credentials. use http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html--> 
    <property name="username" value="smtp user name" /> 
    <property name="password" value="smtp password" /> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.smtp.auth">true</prop> 
      <prop key="mail.transport.protocol">smtp</prop> 
      <prop key="mail.smtp.port">25</prop> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
      <prop key="mail.smtp.starttls.required">true</prop> 
      <prop key="mail.smtp.from">[email protected]</prop> 
     </props> 
    </property> 
</bean> 
+0

¡gracias! eso funcionó para mí. – praveen

1

Si desea utilizar @Bean, los siguientes trabajó para mí:

@Bean 
public MailSender mailSender() { 
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
    mailSender.setHost("email-smtp.eu-west-1.amazonaws.com"); 
    mailSender.setUsername("..."); 
    mailSender.setPassword("..."); 
    mailSender.setPort(465); 
    mailSender.setProtocol("smtps"); 

    // This can be very helpful 
    Properties properties = new Properties(); 
    properties.setProperty("mail.debug", "true"); 
    mailSender.setJavaMailProperties(properties); 

    return mailSender; 
} 
1

Esta pregunta es bastante antiguo, pero en caso de que alguien necesita la configuración de arranque de primavera, esto es lo que funcionó para mí:

mail: 
    host: email-smtp.us-west-2.amazonaws.com 
    port: 465 
    username: <username> 
    password: <pwd> 

    properties: 
     mail.smtp.auth: true 
     mail.smtp.starttls.enable: true 
     mail.smtp.starttls.required: true 
     mail.smtp.ssl.enable: true 
     mail.transport.protocol: smtps 
     mail.smtp.from: [email protected] 
Cuestiones relacionadas