2012-01-18 31 views
14

Chúng tôi đang cố gắng để cấu hình mùa xuân JavaMailSender để làm việc với dịch vụ SES của Amazon sử dụng SMTP, nhưng chúng tôi đang nhận được lỗi này:Làm thế nào để cấu hình Spring JavaMailSender cho SES bằng SMTP?

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

Đây là cấu hình của chúng tôi:

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

ý tưởng Bất kỳ những gì có thể sai ? Cảm ơn trước.

PS: Chúng tôi đã thử giải pháp ở đây: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1 mà không có bất kỳ may mắn nào.

Trả lời

35

Dựa trên @GuCo câu trả lời: Đây là cấu hình đầy đủ mà làm việc cho tôi:

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

Đừng quên cấu hình <property name="protocol" value="smtps" />, hoặc người nào khác javaMailProperties không được xem xét.

+0

Đây là một phản hồi tốt - tôi chỉ thêm rằng, nếu bạn đang cố định cấu hình giao thức từ bên trong lớp Java của mình, bạn muốn sử dụng 'mailSender.setProtocol (" smtps ")' – eugene

14

Tôi vừa gặp phải vấn đề tương tự. Thực ra, tôi đã cố gắng để giải quyết nó một vài tuần trước và đã bị mắc kẹt ...

Điều đầu tiên tôi đã làm, để xác định các vấn đề: kích hoạt chế độ gỡ lỗi cho thư api

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

này cho tôi, rằng nó thực sự không sử dụng SSL

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

Đồng nghiệp của tôi chỉ ra, để bao gồm bất động sản email khác để thực sự sử dụng SSL

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

Sau khi thêm giá trị này, giá trị "isSSL" được thay đổi thành true, nhưng chỉ ra một lỗi khác. Nó không sử dụng xác thực nữa, vì sự thay đổi của giao thức, có thể được cố định bằng cách, tất nhiên, thay đổi thuộc tính

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

để

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

Sau cuộc hành trình đó, cuối cùng nó làm việc đối với tôi :-)

Hy vọng rằng sẽ là hữu ích ...

Chỉ cần tóm tắt các tính chất đúng:

<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

Cảm ơn câu trả lời của bạn. Tôi đã thử và tôi vẫn thấy điều này: 'GẮN RẮN SMTP: cố gắng kết nối với máy chủ" email-smtp.us-east-1.amazonaws.com", cổng 465, isSSL false' conf của tôi trông như thế này bây giờ: ' ... \t \t \t \t \t \t true \t \t \t true \t \t \t smtps \t \t \t true \t \t \t ' Bất kỳ lời đề nghị? – rreyes1979

2

Mã này đang làm việc cho tôi:

<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

cảm ơn! đã làm việc cho tôi. – praveen

1

Nếu bạn muốn sử dụng @Bean, sau đây làm việc cho tôi:

@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

Câu hỏi này là khá cũ, nhưng trong trường hợp ai đó cần cấu hình khởi động mùa xuân, đây là những gì đã hiệu quả đối với tôi:

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] 
Các vấn đề liên quan