发送邮件时无法连接到SMTP主机)

时间:2013-10-25 03:51:21

标签: javamail

使用javax.mail.jar发送邮件时,我遇到(无法连接到SMTP主机)错误。我能够通过smtp.gmail.com发送邮件,但当我尝试连接到我的公司邮件服务器时,我收到错误。我尝试从telnet,我能够从telnet发送邮件,另一个python程序也正在运行,它使用相同的邮件服务器(ip和端口)发送邮件,我们的bugzilla服务器也运行在相同的IP和端口上,它成功发送邮件。我尝试从java以及从log4j到SMTP appender配置相同但没有成功。

请指导我。

提前致谢

我的代码如下 -

    private Session getSession()
{
  Authenticator authenticator = new Authenticator();
  Properties properties = new Properties();
  properties.setProperty("mail.smtp.submitter", authenticator
   .getPasswordAuthentication().getUserName());
  properties.setProperty("mail.smtp.auth", "true");
  properties.put("mail.smtp.socketFactory.port", "25");
  //properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
  properties.setProperty("mail.smtp.starttls.enable", "true");
  properties.setProperty("mail.smtp.host", smtpServer);
  properties.setProperty("mail.smtp.port", smtpPort);

  return Session.getInstance(properties, authenticator);
}

private class Authenticator extends javax.mail.Authenticator
{
  private final javax.mail.PasswordAuthentication authentication;
  public Authenticator()
  {
    authentication =
        new javax.mail.PasswordAuthentication(username, password);
  }
@Override
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
{
  return authentication;
}
}

public boolean sendEmail() throws MessagingException
{
    boolean isSuccess = false;
    String setBody = "";
    String setSubject = "";
    try
    {
        Message message = new MimeMessage(getSession());
        setReceipients(message);
        message.addFrom(new InternetAddress[]
        { new InternetAddress(emailFrom, "Notification") });
        setSubject = emailSubject;
        message.setSubject(setSubject);
        setBody = emailBody + "\nThis is a System Generated Mail";
        message.setContent(setBody, "text/plain");
        Transport.send(message);
        log.info("Mail Sent Successfully to - " + emailTo);
        isSuccess = true;
    }
    catch (UnsupportedEncodingException ex)
    {
        log.error("Error in sending Mail without Attachment- "
            + ex.getMessage());
        log.warn("Mail Sending Failed for Mail ID:" + emailTo);
    }
    catch (SendFailedException e)
    {
        log.error("Invalid Addresses \"" + emailTo + "\" specified:"
            + e.getMessage());
        log.warn("Mail Sending Failed for Mail ID:" + emailTo);
    }
    catch (Exception e)
    {
        log.error("Error in sending Mail without Attachment- "
        + e.getMessage());
            log.warn("Mail Sending Failed for Mail ID:" + emailTo);
    }
    return isSuccess;
    }

1 个答案:

答案 0 :(得分:0)

JavaMail FAQ有debugging tips

从JavaMail中查看调试输出会有所帮助。

可能您有阻止端口25的防火墙或防病毒程序。