2016-04-23 25 views
0

ユーザからユーザ名、パスワードを取得した後にメールを送信しようとしています。すべての電子メールは1つの電子メールアドレスに送信されます。Eclipseのパスとlibフォルダの両方にjavax.mail.jarファイルとjavax.activation.jarファイルを追加しました。ここに私のコードはJavaメールでメールを送信する

public class Email { 
    public String emailTo = "[email protected]"; 

    public boolean sendMail(String emailFrom, String message, String usernme, String passwrd) 
    { 

     final String username = usernme; 
     final String password = passwrd; 
     boolean success = false; 

     Properties prop = new Properties(); 
     prop.put("mail.smtp.auth", "true"); 
     prop.put("mail.smtps.ssl.enable", "true"); 
     prop.put("mail.smtp.host", "smtp.gmail.com"); 
     prop.put("mail.smtp.port", "587"); 
     Session sess = Session.getInstance(prop, new javax.mail.Authenticator() { 
      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
     }); 
     Message mssg = new MimeMessage(sess); 
     try { 
      mssg.setFrom(new InternetAddress(username, ""+username)); 
       mssg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(emailTo)); 
       mssg.setSubject("Suggestions"); 
       mssg.setContent(message, "text/html; charset=utf-8"); 
       Transport.send(mssg); 
       success = true; 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (MessagingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return success; 
    } 



} 

で、今私は、次のエラー

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS comma 
nd first. w15sm12465435pfa.34 - gsmtp 

     at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1 
668) 
     at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1207) 
     at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:735) 
     at javax.mail.Transport.send0(Transport.java:191) 
     at javax.mail.Transport.send(Transport.java:120) 
     at model.Email.sendMail(Email.java:41) 
     at control.SendEmail.doPost(SendEmail.java:47) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:303) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52 
) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:241) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV 
alve.java:220) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV 
alve.java:122) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 
torBase.java:505) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:169) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:103) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: 
956) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:116) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:436) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp 
11Processor.java:1078) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:625) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpo 
int.java:2517) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin 
t.java:2506) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh 
read.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
Email not sent 

を取得しますが、このエラーを取得するための任意のアイデアを持っていますか?

Properties prop = new Properties(); 
     prop.put("mail.smtp.auth", "true"); 
     prop.put("mail.smtp.starttls.enable", "true"); 
     prop.put("mail.smtp.host", "smtp.gmail.com"); 
     prop.put("mail.smtp.port", "587"); 
     Session sess = Session.getInstance(prop, new javax.mail.Authenticator() { 
      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(emailFrom, password); 
      } 
     }); 
     Message mssg = new MimeMessage(sess); 
     try { 
      mssg.setFrom(new InternetAddress(""+emailFrom)); 
       mssg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(emailTo)); 
       mssg.setSubject("Suggestions"); 
       mssg.setContent(message, "text/html; charset=utf-8"); 
       Transport.send(mssg); 
       success = true; 

を次のように私は上記のコードを編集したadavance

を更新し

にありがとう、私はあなたがどんな理由が知っていますか、次のエラー

javax.mail.MessagingException: Can't send command to SMTP host; 
    nested exception is: 
     javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExc 
eption: PKIX path building failed: sun.security.provider.certpath.SunCertPathBui 
lderException: unable to find valid certification path to requested target 
     at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1717) 
     at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1704) 
     at com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:1088) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:46 
8) 
     at javax.mail.Service.connect(Service.java:313) 
     at javax.mail.Service.connect(Service.java:172) 
     at javax.mail.Service.connect(Service.java:121) 
     at javax.mail.Transport.send0(Transport.java:190) 
     at javax.mail.Transport.send(Transport.java:120) 
     at model.Email.sendMail(Email.java:43) 
     at control.SendEmail.doPost(SendEmail.java:47) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:303) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52 
) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:241) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:208) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV 
alve.java:220) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV 
alve.java:122) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 
torBase.java:505) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:169) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:103) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: 
956) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:116) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:436) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp 
11Processor.java:1078) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:625) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpo 
int.java:2517) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin 
t.java:2506) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh 
read.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.Validator 
Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPath 
BuilderException: unable to find valid certification path to requested target 
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
     at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1937) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker. 
java:1478) 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.jav 
a:212) 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:957) 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:892) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1050) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl. 
java:1363) 
     at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:735) 
     at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123) 
     at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:110) 

     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82 
) 
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) 
     at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1715) 
     ... 33 more 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali 
d certification path to requested target 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) 
     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.jav 
a:292) 
     at sun.security.validator.Validator.validate(Validator.java:260) 
     at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.j 
ava:324) 
     at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerIm 
pl.java:229) 
     at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustMan 
agerImpl.java:124) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker. 
java:1460) 
     ... 44 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to 
find valid certification path to requested target 
     at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBu 
ilder.java:145) 
     at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCert 
PathBuilder.java:131) 
     at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) 

を取得しますか?

+0

を多分これ役立ちますhttp://stackoverflow.com/questions/10509699/must-issue-a-starttls-command-first – RubioRic

+0

もで[Gmailの指示を参照してください。 JavaMail FAQ](http://www.oracle.com/technetwork/java/javamail/faq/index.html#gmail)を参照してください。 –

+1

'prop.put(" mail.smtps.ssl.enable "、" true ")という行に誤字があります。 - 'smtp'の後ろに余分な 's'があります。 –

答えて

0

てみてください次のコードを追加:

Properties props = new Properties(); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.smtp.starttls.enable", "true"; 
props.put("mail.smtp.host", "smtp.gmail.com"); 
props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); 
props.put("mail.smtp.port", "587"); 
関連する問題