2012-01-18 14 views
14

Stiamo cercando di configurare primavera JavaMailSender a lavorare con il servizio SES di Amazon utilizzando il protocollo SMTP, ma stiamo ottenendo questo errore:Come configurare Spring JavaMailSender per SES utilizzando SMTP?

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

Questa è la nostra configurazione:

<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> 

Delle idee che cosa potrebbe essere sbagliato ? Grazie in anticipo.

PS: Abbiamo già provato la soluzione qui: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 senza fortuna.

risposta

35

Sulla base @GuCo risposta: Questa è la configurazione completa che ha funzionato per me:

<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> 

Non dimenticare la configurazione <property name="protocol" value="smtps" />, altrimenti i javaMailProperties non vengono presi in considerazione.

+0

Questa è una buona risposta - aggiungerei solo che, se stai cercando di configurare il protocollo all'interno della tua classe Java, dovresti usare 'mailSender.setProtocol (" smtps ")' – eugene

14

Ho appena incontrato lo stesso problema. A dire il vero, ho cercato di risolvere un paio di settimane fa e rimasto bloccato ...

prima cosa che ho fatto, per identificare il problema: attivare la modalità di debug per la posta api

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

Questo mi ha mostrato, che in realtà non fa uso di SSL

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

il mio collega ha sottolineato, per includere un'altra proprietà posta elettronica da utilizzare davvero SSL

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

Dopo aver aggiunto questo valore il valore "isSSL" è cambiato in vero, ma ha indicato un altro errore. Non usa l'autenticazione più, a causa del cambiamento del protocollo, che può essere risolto, naturalmente, la modifica della proprietà

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

a

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

Dopo quel viaggio, finalmente ha funzionato per me :-)

speranza che era utile ...

Giusto per riassumere le proprietà corrette:

<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

Grazie per la risposta. Ho provato e sto ancora vedendo questo: 'DEBUG SMTP: cercando di connettersi all'host" email-smtp.us-east-1.amazonaws.com", porta 465, isSSL false' mio conf assomiglia a questo ora: ' ... \t javaMailProperties \t \t \t \t \t true \t \t \t true \t \t \t SMTPS \t \t \t true \t \t \t ' Qualche suggerimento? – rreyes1979

2

Questo codice sta lavorando per me:

<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

grazie! quello ha funzionato per me. – praveen

1

Se si desidera utilizzare @Bean, i seguenti ha lavorato per me:

@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

Questa domanda è abbastanza vecchio, ma nel caso in cui qualcuno ha bisogno la configurazione di avvio primavera, questo è ciò che ha funzionato per me:

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] 
Problemi correlati