2012-01-18 11 views
14

staramy się skonfigurować Wiosna JavaMailSender do pracy z usługą Amazon SES za pomocą protokołu SMTP, ale jesteśmy coraz to błąd:Jak skonfigurować Spring JavaMailSender dla SES przy użyciu SMTP?

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

To nasza konfiguracja:

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

jakieś pomysły co może być nie tak ? Z góry dziękuję.

PS: Wypróbowaliśmy już tutaj rozwiązanie: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 bez żadnego szczęścia.

Odpowiedz

35

podstawie @GuCo odpowiedź: Jest to pełna konfiguracja, który pracował dla mnie:

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

Nie zapomnij konfigurację <property name="protocol" value="smtps" />, albo też javaMailProperties nie są brane pod uwagę.

+0

To jest dobra odpowiedź - dodam tylko, że jeśli próbujesz skonfigurować protokół z poziomu klasy Java, chcesz użyć 'mailSender.setProtocol (" smtps ")' – eugene

14

Po prostu napotkałem ten sam problem. Rzeczywiście, próbowałem go rozwiązać kilka tygodni temu i utknął ...

Pierwszą rzeczą jaką zrobiłem, aby zidentyfikować problem: włączyć tryb debugowania dla API poczty

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

ten pokazał mi, że faktycznie nie używa SSL

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

Mój kolega zauważył, zawierać inną nieruchomość mail aby naprawdę używać SSL

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

Po dodaniu tej wartości wartość "isSSL" została zmieniona na wartość true, ale wskazano inny błąd. Nie używa uwierzytelniania więcej, ze względu na zmianę protokołu, które mogą być ustalone, oczywiście, zmieniając właściwość

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

do

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

Po tej podróży, to w końcu pracował dla mnie :-)

nadzieję, że był pomocny ...

Wystarczy podsumować poprawnych właściwości:

<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

Dziękuję za odpowiedź. Próbowałem go i nadal widzę to: 'DEBUG SMTP: próbuję połączyć się z hostem" email-smtp.us-east-1.amazonaws.com”, port 465, isSSL FALSE Moja conf wygląda to teraz: ' <\t ... nazwę właściwości = ""> javaMailProperties \t \t \t \t \t true \t \t \t true \t \t \t SMTPS \t \t \t true \t \t \t ' Wszelkie sugestie? – rreyes1979

2

Ten kod działa dla mnie:

<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

dzięki! to zadziałało dla mnie. – praveen

1

Jeśli chcesz użyć @Bean, następujące pracował dla mnie:

@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

To pytanie jest dość stary, ale w przypadku, gdy ktoś potrzebuje Wiosenna konfiguracja rozruchowa działa właśnie dla mnie:

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]