2011-12-21 27 views
11

Tôi đang cố gắng gửi email với SES/SMTP của Amazon và tôi nhận được lỗi sau :Không thể kết nối với máy chủ SMTP: email-smtp.us-east-1.amazonaws.com, cổng: 465, phản hồi: -1

javax.mail.MessagingException: không thể kết nối đến máy chủ SMTP: email-smtp.us-east-1.amazonaws.com, cổng: 465, phản ứng: -1

đây là cách tôi đang cố gắng gửi thư:

Cấu hình người gửi thư mùa xuân:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="${mail.server}"/> 
     <property name="port" value="${mail.port}"/> 
     <property name="username" value="${aws.mail.smtp.user}"/> 
     <property name="password" value="${aws.mail.smtp.password}"/> 
     <property name="javaMailProperties"> 
      <props> 
      <!-- Use SMTP-AUTH to authenticate to SMTP server --> 
      <prop key="mail.smtp.auth">true</prop> 
      <!-- Use TLS to encrypt communication with SMTP server --> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
      </props>  
     </property> 
    </bean> 

với:

mail.server =email-smtp.us-east-1.amazonaws.com 
mail.port = 465 

Trả lời

12

Với amazon SES, cấu hình cần thực hiện như sau:

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

thay vì:

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

như ám bởi dave.

EDIT: Vui lòng sử dụng giải pháp này: https://stackoverflow.com/a/8928559/536299

+0

Tôi không nghĩ rằng đoạn mã trong câu trả lời này là chính xác (nên là "mail.smtps.auth"), nhưng thông tin trong liên kết là tốt và sẽ đưa bạn đến câu trả lời. – fivedogit

4

Amazon SES SMTP yêu cầu SSL trước phiên SMTP. Lệnh StartTLS không được SES hỗ trợ.

+0

Cảm ơn Dave, tôi cũng đã cố gắng đặt * mail.smtp.starttls.enable * thành false thành không có kết quả. Bạn có ý tưởng nào khác không? – balteo

0

Nhân viên này từ AWS khẳng định rằng SES không hỗ trợ SSL ở tất cả. https://forums.aws.amazon.com/message.jspa?messageID=218303.

Amazon SES will attempt to send email with Transport Layer Security enabled, but there is not a way to guarantee messages are sent with TLS. SES uses opportunistic TLS when sending emails, which means it will attempt to send emails over TLS first, and then will fall back to regular SMTP if TLS is unavailable.

Do đó, tôi nghĩ vấn đề bạn đang thấy không phải là TLS hoặc SSL có liên quan, thay vì điều gì khác.

+0

Điều này rõ ràng không còn là trường hợp - tôi phải * kích hoạt * SSL để nhận email hoạt động trở lại với máy chủ Railo của tôi. –

0

Lưu ý rằng ghi chú AWS tại https://forums.aws.amazon.com/message.jspa?messageID=218303 đề cập đến mã hóa giao tiếp giữa các máy chủ để duy trì tính bảo mật của thông báo email, là đặc điểm chung của tất cả các dịch vụ SMTP.

Câu hỏi này liên quan đến việc sử dụng kết nối an toàn tới máy chủ SMTP AWS để bảo vệ mật khẩu được sử dụng để xác thực với máy chủ AWS.

0
Properties props = new Properties(); 
props.setProperty("mail.transport.protocol", "smtp"); 
props.setProperty("mail.smtp.auth", "true"); 
props.setProperty("mail.host", "email-smtp.us-east-1.amazonaws.com"); 
props.setProperty("mail.user", "your_ses_user"); 
props.setProperty("mail.password", "your_ses_pwd"); 



Session mailSession = Session.getDefaultInstance(props, new Authenticator(){ 
    public PasswordAuthentication getPasswordAuthentication() { 
     String username = "your_ses_user"; 
     String password = "your_ses_pwd"; 
     return new PasswordAuthentication(username, password); 
    } 
}); 

Mã này đã được kiểm tra, hoạt động tốt. Nếu bạn muốn sử dụng SMTP qua SSL, xin vui lòng cấu hình:

props.setProperty("mail.smtp.starttls.enable", "true"); 

Hoặc bạn có thể tải AWS Java SDK từ HERE.

mẫu Mã là HERE

1

Các thiết lập này làm việc cho tôi:

mail.transport.protocol=smtp 
mail.smtp.port=25 
mail.smtp.auth=true 
mail.smtp.starttls.enable=true 
mail.smtp.starttls.required=true 
mail.smtp.host=email-smtp.us-east-1.amazonaws.com 
mail.smtp.user=[SMTP username] 
mail.smtp.password=[SMTP user password] 

Nếu bạn cố gắng kết nối để kết nối sử dụng kết nối SSL, nó từ chối kết nối. Vì vậy, bạn cần phải thực hiện STARTTLS sau khi kết nối.

Bạn có thể thêm mail.debug = true để xem vị trí không thành công.

Địa chỉ email của người gửi phải là địa chỉ email được xác minh nếu không SES từ chối chuyển tiếp email.

Các vấn đề liên quan