2013-06-11 25 views
5

Tôi đang cố tạo một phiên javamail trong Websphere 7 để sử dụng Gmail, nhưng xác thực của tôi luôn thất bại.Cách sử dụng Phiên Javamail mặc định trong Websphere với GMail

Có người đàn ông, mật khẩu của tôi là ok ...

Tôi đang cấu hình phiên tôi như:

Output Thư Thuộc tính

  • Provider: Built-in cung cấp Thư
  • JNDI: thư/phiên/Mặc định
  • Gỡ lỗi: Trên
  • Server: smtp.gmail.com
  • Protocol: smtp
  • User: [email protected]
  • Mật khẩu: mypassword
  • Confirm Password: tương tự như trên
  • Return email: myuser @ gmail năm

Trong Properties phiên, tôi có:

  • mail.smtp.auth = true
  • mail.smtp.port = 465
  • mail.smtp.starttls.enable = true
  • mail.smtp.socketFactory.port = 465
  • mail.smtp. socketFactory.class = javax.net.ssl.SSLSocketFactory

tôi đang sử dụng một thử nghiệm JSP với một cái gì đó giống như ...

... 
System.out.println("Entering MailJsp!"); 

String errorMessage = null; 
String destinationAddress = request.getParameter("destinationAddress"); 
String messageBody = request.getParameter("message"); 
String subject = "Mail from MailServlet"; 
String emailFrom = "[email protected]"; 

// try only if it is not the first request 
if (destinationAddress != null) { 

    System.out.println("Sending email"); 
    try 
    { 
     // look up MailSession 
     Context context = new InitialContext(); 
     Session mailSession = (Session)context.lookup("mail/session/Default"); 

     System.out.println("Mail Session Properties: " + mailSession.getProperties()); 
     Message msg = new MimeMessage(mailSession); 
     msg.setFrom(new InternetAddress(emailFrom)); 
     msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(destinationAddress)); 

     // Set the subject and body text 
     msg.setSubject(subject); 
     msg.setText(messageBody); 

     // send message 
     Transport.send(msg); 
     System.out.println("Email Sent"); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Error sending Email: " + e); 
     e.printStackTrace(); 
     errorMessage = e.getMessage() != null ? e.getMessage() : e.toString(); 
    } 
} 
System.out.println("Exiting MailJsp"); 

...

... và, ghi kết quả của tôi là:

Entering MailJsp! 
Sending email 
DEBUG: JavaMail version 1.4ea 
DEBUG: java.io.FileNotFoundException: C:\environment\server\IBM\WAS7\AppServer\java\jre\lib\javamail.providers (The system cannot find the file specified.) 
DEBUG: !anyLoaded 
DEBUG: not loading resource: /META-INF/javamail.providers 
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,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} 
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]} 
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
DEBUG: !anyLoaded 
DEBUG: not loading resource: /META-INF/javamail.address.map 
DEBUG: java.io.FileNotFoundException: C:\environment\server\IBM\WAS7\AppServer\java\jre\lib\javamail.address.map (The system cannot find the file specified.) 
*** In SessionFactory.setPasswordAuthentication, TRANSPORT PasswordAuthentication is based on: 
    url=smtp://[email protected]@smtp.gmail.com:465 
    [email protected] 
    password=******** 
*** In SessionFactory.getObjectInstance, session properties: 
    mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory 
    mail.transport.protocol=smtp 
    mail.imaps.class=com.sun.mail.imap.IMAPSSLStore 
    mail.smtp.host=smtp.gmail.com 
    mail.debug=true 
    [email protected] 
    mail.pop3s.class=com.sun.mail.pop3.POP3SSLStore 
    mail.smtp.starttls.enable=true 
    mail.smtp.port=465 
    mail.smtp.class=com.sun.mail.smtp.SMTPTransport 
    mail.smtp.auth=true 
    mail.smtps.class=com.sun.mail.smtp.SMTPSSLTransport 
    mail.smtp.socketFactory.port=465 
    [email protected] 
    mail.imap.class=com.sun.mail.imap.IMAPStore 
    mail.mime.address.strict=true 
    mail.pop3.class=com.sun.mail.pop3.POP3Store 
Mail Session Properties: {mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, mail.transport.protocol=smtp, mail.imaps.class=com.sun.mail.imap.IMAPSSLStore, mail.smtp.host=smtp.gmail.com, mail.debug=true, [email protected], mail.pop3s.class=com.sun.mail.pop3.POP3SSLStore, mail.smtp.starttls.enable=true, mail.smtp.port=465, mail.smtp.class=com.sun.mail.smtp.SMTPTransport, mail.smtp.auth=true, mail.smtps.class=com.sun.mail.smtp.SMTPSSLTransport, mail.smtp.socketFactory.port=465, [email protected], mail.imap.class=com.sun.mail.imap.IMAPStore, mail.mime.address.strict=true, mail.pop3.class=com.sun.mail.pop3.POP3Store} 
DEBUG: mail.smtp.class property exists and points to com.sun.mail.smtp.SMTPTransport 
DEBUG SMTP: useEhlo true, useAuth true 
Error sending Email: javax.mail.AuthenticationFailedException 
javax.mail.AuthenticationFailedException 
    at javax.mail.Service.connect(Service.java:306) 
    at javax.mail.Service.connect(Service.java:156) 
    at javax.mail.Service.connect(Service.java:105) 
    at javax.mail.Transport.send0(Transport.java:168) 
    at javax.mail.Transport.send(Transport.java:98) 
    at com.ibm._jsp._email._jspService(_email.java:127) 
    at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1443) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1384) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:852) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:785) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175) 
    at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:121) 
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:234) 
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3610) 
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:274) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:926) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1557) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:173) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527) 
Exiting MailJsp 

Nếu tôi sử dụng theo cách khác, nó hoạt động!

Session mailSession = (Session)context.lookup("mail/session/Default"); 
Properties props = mailSession.getProperties(); 

mailSession = Session.getDefaultInstance(
    props, 
    new javax.mail.Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("[email protected]","mypassword"); 
     } 
    }); 

Nhưng, tôi muốn sử dụng mật khẩu được đặt trong Bảng điều khiển quản trị và không cung cấp theo chương trình. Vì vậy, người dùng có thể quản lý mật khẩu của họ.

Ai đó có thể giúp bạn không?

tks

+0

SSL có thực sự là giải pháp ở đây không? btw bất kỳ lời khuyên về khắc phục sự cố này trong WAS hoặc kiểm tra nó? – Tilo

Trả lời

4

Bạn có thể khắc phục vấn đề bằng cách thêm giấy chứng nhận ca sĩ cho gmail smtp:

  1. Đăng nhập để quản lý giao diện điều khiển của WebSphere
  2. An ninh - > Chứng chỉ bảo mật và Quản lý khóa
  3. Chọn khóa Lưu trữ và Chứng nhận
  4. Chọn Cửa hàng khóa mặc định của nút, sau đó bạn sẽ đến một trang khác vui lòng truy cập trang tiếp theo để tiếp tục khắc phục sự cố của bạn về Email Đang gửi.
  5. Trên trang NodeDefaultKeyStore, Chọn "Người ký Certifiicate" (bên tay phải bên)
  6. Bấm "Lấy từ cổng" nút
  7. Điền vào các hình thức:
    • host: smtp.gmail.com
    • cổng: 465 (nhớ là chúng tôi đang làm cho ssl)
    • bí danh: gmail.com
  8. nhấn OK hơn sẽ thấy "tiết kiệm" - vì vậy click vào nó như sau SSL chứng chỉ và quản lý khóa> Các cửa hàng và chứng chỉ chính bạn sẽ có thể xem chứng chỉ ssl cho java. Vui lòng khởi động lại máy chủ ứng dụng của bạn sau khi jsp của bạn hoạt động.

Vấn đề là Websphere không tin tưởng vào chứng chỉ ssl của gmail, do đó, đó là vấn đề. Tôi đã cố gắng khắc phục sự cố tương tự bằng cách thêm chứng chỉ hy vọng bạn sẽ được hưởng lợi từ hướng dẫn của tôi

0

Integrated Solutions Bảng điều khiển

Mail Sessions > WPexchange > Custom properties > mail.smtp.port 

Name: mail.smtp.port 
Value: 587 
+0

đây phải là một sản phẩm khác, tôi đang sử dụng WAS 6.1 và 7.0. –

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