2012-01-18 11 views
14

Biz SMTP kullanarak Amazon'un SES hizmeti ile çalışacak şekilde İlkbahar JavaMailSender yapılandırmak çalışıyoruz, ancak biz bu hatayı alıyorsanız:SMTP kullanarak SES için Spring JavaMailSender nasıl yapılandırılır?

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

Herhangi fikirler yanlış olabilir: Bu bizim yapılandırma

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

? Şimdiden teşekkürler.

PS: Zaten çözümü burada denedik: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 herhangi bir şans olmadan.

cevap

35

:

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

<property name="protocol" value="smtps" /> yapılandırmayı unutmayın, yoksa javaMailProperties dikkate alınmaz: Bu benim için çalıştı tam yapılandırmasıdır.

+0

Bu iyi bir yanıttır - bunu ekleyelim, eğer protokolü Java sınıfınızdan yapılandırmaya çalışıyorsanız, 'mailSender.setProtocol (" smtps ")' – eugene

14

Sadece aynı problemle karşılaştım. Posta api

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

Bu bana gösterdi için hata ayıklama modunu etkinleştirmek: Aslında sorunu tanımlamak için,

... benim yaptığım ilk şey birkaç hafta önce çözmeye çalıştı ve sıkışıp kaldı aslında meslektaşım işaret

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

SSL kullanmayan, gerçekten SSL

<props> 
    ... 
    <prop key="mail.transport.protocol">smtps</prop> 
    ... 
</props> 
kullanmak için başka posta özelliği içerecek şekilde

Bu değeri ekledikten sonra "isSSL" değeri true olarak değiştirildi, ancak başka bir hatayı işaret etti. O yolculuktan sonra

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

mülkü

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

değişen çünkü tabii ki, düzeltilebilir protokol değişikliklerinden, artık kimlik kullanmaz, sonunda çalıştı

: yardımcı oldu bana :-)

Hope ...

Sadece özetlemek için doğru özellikleri için @GuCo cevap dayanarak

<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

Denedim ve hala bunu görüyorum: 'DEBUG SMTP: ana bilgisayara bağlanmaya çalışıyor" email-smtp.us-east-1.amazonaws.": , 465 portu, isSSL Benim conf şimdi şöyle FALSE" = "javaMailProperties"> \t \t \t \t \t <> true anahtar = "mail.smtps.auth" pervane \t \t \t "mail.smtp.ssl.enable" gerçek \t \t \t SMTPS \t \t \t \t \t \t ' herhangi bir öneriniz doğrudur> mail.debug"? – rreyes1979

2

Bu kod benim için çalışıyor: Bu soru oldukça eskidir

@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; 
} 
+0

'u kullanmak istersiniz! Bu benim için çalıştı. – praveen

1

Eğer @Bean kullanmak istiyorsanız, benim için çalıştı aşağıdaki İlkbahar önyükleme yapılandırması, bu benim için çalıştı: Bu cevabınız için teşekkürler:

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

fakat durumda birileri gerekir:

<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> 
İlgili konular