javax未知主机异常?

时间:2014-11-12 18:29:25

标签: java

我试图使用javax发送eamil。 我的代码如下:

private String emailSender(String emailTo, String emailFrom, String message, String subject, String password) {
    String status = "failed";

    try {
        String ccEmail = "";
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

        // Get a Properties object
        Properties props = System.getProperties();
        props.setProperty("mail.smtps.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.port", "465");
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.setProperty("mail.smtps.auth", "true");

        props.put("mail.smtps.quitwait", "false");

        Session session = Session.getInstance(props, null);

        // -- Create a new message --
        final MimeMessage msg = new MimeMessage(session);

        // -- Set the FROM and TO fields --
        msg.setFrom(new InternetAddress(emailFrom));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(emailTo, false));

        if (ccEmail.length() > 0) {
            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccEmail, false));
        }

        msg.setSubject(subject);
        msg.setText(message, "utf-8");
        msg.setSentDate(new Date());

        SMTPTransport t = (SMTPTransport) session.getTransport("smtps");
        String host = StringUtils.substringAfter(emailFrom, "@");
        String emailName = StringUtils.substringBefore(emailFrom, "@");


        t.connect("smtp." + host, emailName, password);
        t.sendMessage(msg, msg.getAllRecipients());
        t.close();
        status = "Sent";
    } catch (Exception e) {
        LOGGER.error("error with sending email ", e);
    }

    return status;
}

一般来说它运作正常。我可以通过gmail帐户或雅虎发送...但是当我试图从contact@vayg.com帐户发送时,得到了这样的未知主机异常:

javax.mail.MessagingException: Unknown SMTP host: smtp.vayg.com;

任何解决方案?

2 个答案:

答案 0 :(得分:1)

您假设主持人拥有第3级域名,并且始终以" smtp为前缀。"

但情况可能并非总是如此。 smtp主机名可以是任何内容。

答案 1 :(得分:0)

从您的管理员处获取您的smtp主机名和端口,然后在您的代码中使用它。

例如:正如您在代码中提到的,gmail有自己的域名和端口号。

在属性文件中添加适当的主机名和端口号,然后尝试运行代码。