2015-04-23 70 views
1

我试图使用Gmail SMTP向任何Gmail帐户发送简单的电子邮件。得到下面的错误。使用Gmail中的Gmail帐户发送邮件

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; nested exception is: java.net.ConnectException: Connection timed out: connect

我的代码是

package common; 

import java.util.Date; 
import java.util.Properties; 

import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

import com.sun.mail.smtp.SMTPMessage; 

public class SimpleMail{ 

    /** 
      Outgoing Mail (SMTP) Server 
      requires TLS or SSL: smtp.gmail.com (use authentication) 
      Use Authentication: Yes 
      Port for SSL: 465 
     */ 
     public static void main(String[] args) { 

      String to="[email protected]"; 
      String subject="New Mail"; 

      String msg="test test"; 

      final String user="gmailuser"; 
      final String pass="gmailpassowd"; 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", "smtp.gmail.com"); 
      props.put("mail.smtp.port", "587"); //this is optional 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.starttls.enable", "true"); 



      Session session = Session.getInstance(props,new javax.mail.Authenticator() { 

        @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(user,pass); 
      } 
      }); 

      try { 
      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(user)); 
      message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
      message.setSubject(subject); 
      message.setText(msg); 

      Transport.send(message); 
       System.out.println("Mail sent.."); 
     }catch(Exception e) 
     { 
      System.out.println(e); 
     } 
    } 



} 
+1

是您的Internet连接是否正常工作?你在使用一些代理吗? – Aakash

+0

我认为你应该从http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/通过SSL例子来试用Gmail。此外,您的收件人的电子邮件地址(如果其Gmail)应该有此设置,否则邮件不会发送 - “Gmail安全设置 - >帐户权限 - >访问安全性较低的应用程序” – LittlePanda

+0

java.net.ConnectException:连接超时:连接意味着你有一些互联网和/或防火墙问题 – Dev

回答

1

检查你的端口。从谷歌的支持:

如果你试着设置了端口465(使用SSL)和端口587(使用TLS)的SMTP服务器,但仍无法发送邮件,请将SMTP配置为使用端口25(与SSL)。

来源:https://support.google.com/mail/answer/78775?hl=en

所以,尽量使用端口25,看看会发生什么。

+0

我已经尝试SSL与端口25,也访问安全性较低的应用程序是允许的。 –

+0

线程“main”中的异常java.lang.RuntimeException:javax.mail.MessagingException:无法连接到SMTP主机:smtp.gmail.com,port:25; –

+0

你可以ping smtp.gmail.com? –

1

我使用Apache Commons Email库通过java中的Gmail smtp发送了电子邮件。
documentation有一个很好的和简单的例子:

Email email = new SimpleEmail(); 
email.setHostName("smtp.googlemail.com"); 
email.setSmtpPort(465); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setSSLOnConnect(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send();