2013-02-12 3 views
0

Я использую подобный код в коде ниже идентификатор имени пользователя имя пользователя и пароль дает пароль почты, с которого я буду отправлять почтуЯ не могу отправить почту от Явы

Properties props = System.getProperties(); 
props.put("mail.smtp.starttls.enable", "true"); 
props.put("mail.smtp.host", host); 
props.setProperty("mail.transport.protocol", "smtps"); 
props.put("mail.smtp.user", userid); 
props.put("mail.smtp.password", password); 
props.put("mail.smtp.port", "465"); 
props.put("mail.smtps.auth", "true"); 
Session session = Session.getDefaultInstance(props, null); 
MimeMessage message = new MimeMessage(session); 
InternetAddress fromAddress = null; 
InternetAddress toAddress = null; 

try { 
fromAddress = new InternetAddress(from); 
toAddress = new InternetAddress(to); 
} catch (AddressException e) { 

e.printStackTrace(); 
} 

message.setFrom(fromAddress); 
message.setRecipient(RecipientType.TO, toAddress); 
message.setSubject(subject); 
message.setText(text); 

//SMTPSSLTransport transport =(SMTPSSLTransport)session.getTransport("smtps"); 

Transport transport = session.getTransport("smtps"); 
transport.connect(host, userid, password); 
transport.sendMessage(message, message.getAllRecipients()); 
transport.close(); 

но это дает мне ошибка как

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; 
    nested exception is: 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972) 
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642) 

Может ли один предложить мне, Что проблема с моим кодом ..... Thank U заранее .....

+0

Взгляните на эту статью, вместо этого они используют порт 587: http://www.mkyong.com/spring/spring-sending-e-mail-via-gmail-smtp-server-with-mailsender/ –

ответ

2
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.port", "587"); 

Это настройка свойств, которую я использовал для успешной отправки электронной почты с помощью учетной записи gmail. то вы можете создать сеанс с помощью:

Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(emailAddress, password); 
       } 
       }); 

Это немного другой подход, но он работал в коде я использую.