2015-05-21 13 views
7

Tôi đang cố gắng định cấu hình thư bằng máy chủ Exchange.Email Grails mail Cấu hình máy chủ Exchange

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

grails { 
    mail { 
     host = "mail.xxx.xx.xx" 
     port = 443 
     username = "username" 
     password = "password" 
     props = [ "mail.smtp.auth":"true", 
        "mail.smtp.port":"443", 
        "mail.smtp.ssl.enable" :"true" 
       ] 
    } 
} 

Tôi nhận được lỗi sau

Message: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Exception reading response; 
    nested exception is: 
    java.net.SocketException: Connection reset. Failed messages: javax.mail.MessagingException: Exception reading response; 

Tôi biết đó là một vấn đề với các đạo cụ mà tôi cần phải thay đổi, vì cấu hình này hoạt động trên mail của tôi ứng dụng. Tôi biết rằng cổng là chính xác, nó sử dụng SSL.

Tôi cũng đã cố gắng sử dụng các đạo cụ

props = ["mail.smtp.timeout"    : "100000", 
      "mail.smtp.starttls.enable"  : "true", 
      "mail.smtp.EnableSSL.enable"  : "true", 
      "mail.transport.protocol"   : "smtps", 
      "mail.smtp.socketFactory.port" : "443", 
      "mail.smtp.auth"     : "true", 
      "mail.smtp.socketFactory.class" : "javax.net.ssl.SSLSocketFactory", 
      "mail.smtp.socketFactory.fallback": "false", 
      "mail.debug"      : "true"] 

Kết quả debug nó này:

DEBUG: JavaMail version 1.5.1 
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
DEBUG: Tables of loaded providers 
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]} 
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]} 
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle] 
DEBUG SMTP: useEhlo true, useAuth false 
DEBUG SMTP: trying to connect to host "xxx.xxx.xx.xx", port 443, isSSL true 
+0

Vì bạn đang sử dụng SSL, bạn có chắc là kho khóa java của bạn có CA cho nhà phát hành chứng chỉ của máy chủ không? – esauro

+0

Không, bạn có thể giải thích cho tôi thêm về cách thực hiện điều này không? những gì tôi đã làm là chỉ thêm dữ liệu từ ứng dụng thư của tôi vào cấu hình này. –

+0

Bạn có thể thử những gì tôi đã nói không? – esauro

Trả lời

0

Có vẻ với tôi như một vấn đề chứng chỉ. Nếu bạn có quyền truy cập vào một máy chủ không sử dụng SSL, tôi sẽ kiểm tra rằng đầu tiên, nếu không bạn nên:

  • Tìm người phát hành giấy chứng nhận (nếu bạn không biết điều đó, bạn có thể sử dụng openssl xác minh http://www.herongyang.com/Cryptography/OpenSSL-Certificate-Path-Validation-Tests.html)
  • nhìn một CA trong keystore java của bạn
    • Xác định vị trí hoặc là keystore java mặc định (How do I find out what keystore my JVM is using?) hoặc một trong những bạn đang sử dụng
    • Danh sách các keystore và tìm kiếm một CA tương ứng
    • Nếu có một CA sau đó vấn đề không có khả năng là
    • Nếu không có CA tương ứng, hãy lấy chứng chỉ CA và nhập nó vào kho khóa của bạn, khởi động lại máy chủ và sẽ hoạt động trở lại.
+0

Hi đã thử nó, nó không phải là một vấn đề giấy chứng nhận, bởi vì tôi có nó. –

+0

Uhm, bạn có chắc là cổng của bạn là 443 không? Thông thường cổng đó được sử dụng bởi các máy chủ web bảo mật. Cổng tiêu chuẩn cho smtp an toàn là 465. – esauro

0

Tôi gặp vấn đề tương tự một thời gian. Nếu bạn đang cố gắng truy cập vào một máy chủ trao đổi trong một mạng (tổ chức), tôi tin rằng số cổng là vấn đề ở đây. Nó có thể đã được thay đổi bởi quản trị mạng.

Vui lòng liên hệ với quản trị viên mạng và giải thích cho anh ấy rằng bạn đang cố gắng truy cập vào Exchange Server và yêu cầu tên người dùng, mật khẩu và số cổng liên quan. Xác thực có thể là tùy chọn nếu ứng dụng được chạy trong nhà, ví dụ:

props = ["mail.smtp.auth":"false"]

Tôi hy vọng điều này sẽ giúp.

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