java mail smtp连接问题

时间:2011-08-04 12:20:31

标签: java email smtp connection

我正在尝试以下示例使用从here挑选的ssl发送邮件,并使用我的凭据进行更改,如下所示,如图所示获取异常,是否可以帮助我完成它

import javax.mail.*;
import javax.mail.internet.*;

import java.util.Properties;


public class SimpleSSLMail {

    private static final String SMTP_HOST_NAME = "xx.xx.xx.xx";
    private static final int SMTP_HOST_PORT = 25 ;//465;
    private static final String SMTP_AUTH_USER = "xxx@yyy.com";
    private static final String SMTP_AUTH_PWD  = "xxxx";

    public static void main(String[] args) throws Exception{
       new SimpleSSLMail().test();
    }

    public void test() throws Exception{
        Properties props = new Properties();

        props.put("mail.transport.protocol", "smtps");
        props.put("mail.smtps.host", SMTP_HOST_NAME);
        props.put("mail.smtps.auth", "true");
        // props.put("mail.smtps.quitwait", "false");

        Session mailSession = Session.getDefaultInstance(props);
        mailSession.setDebug(true);
        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        message.setSubject("Testing SMTP-SSL");
        message.setContent("This is a test", "text/plain");

        message.addRecipient(Message.RecipientType.TO,
             new InternetAddress("myid@gmail.com"));

        transport.connect
          (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);

        transport.sendMessage(message,
            message.getRecipients(Message.RecipientType.TO));
        transport.close();
    }
}

例外:

Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host:xx.xx.xx.xx, port: 25;
  nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
    at javax.mail.Service.connect(Service.java:275)

1 个答案:

答案 0 :(得分:3)

由于网络问题,会出现此类问题。可能是您需要身份验证,您的用户名,密码可能不正确。

无论如何,你的代码中很多东西都缺少了。 获取与gmail服务器正确的SSL连接的示例

props.put("mail.smtp.socketFactory.port", "465");
 props.put("mail.smtp.socketFactory.class",
                           "javax.net.ssl.SSLSocketFactory");
 props.put("mail.smtp.auth", "true");
 props.put("mail.smtp.port", "465");

我在代码中没有看到任何位置。那么验证方法在哪里?

请查看以下链接:

Sending E-mail Using Gmail In Java 您可以选择使用TLS或SSl

Java Mail API

E-mailing through Java

keys used in java mailing system for your reference