无法发送邮件 - javax.mail.NoSuchProviderException:smtp

时间:2011-03-29 13:21:57

标签: java email

我正在尝试使用带有此代码的apache james发送电子邮件

public static void main(String[] args)
{

    String user = "sumit";  // Newly created user on JAMES
    String password = "sumit"; // user password

    String fromAddress = "sumit@localhost"; // newlycreateduser@localhost
    String toAddress = "sumitjain91@gmail.com";

    // Create a mail session
    Properties properties = new Properties();
    properties.put("mail.smtp.host", "localhost");
    properties.put("mail.smtp.port", "25");
    properties.put("mail.smtp.username", user);
    properties.put("mail.smtp.password", password);
    Session session = Session.getDefaultInstance(properties, null);

    try
    {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(fromAddress));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));

        message.setSubject("Email from our JAMES Server");
        message.setText("Luke, I'm your father!!");
        Transport.send(message);

        System.out.println("Email sent successfully");
    }
    catch (MessagingException e)
    {
        e.printStackTrace();
    }
}

我收到以下异常

javax.mail.NoSuchProviderException: smtp
    at javax.mail.Session.getService(Session.java:784)
    at javax.mail.Session.getTransport(Session.java:720)
    at javax.mail.Session.getTransport(Session.java:660)
    at javax.mail.Session.getTransport(Session.java:640)
    at javax.mail.Session.getTransport(Session.java:697)
    at javax.mail.Transport.send0(Transport.java:192)
    at javax.mail.Transport.send(Transport.java:124)
    at mail.Main.main(Main.java:44)

请帮忙

2 个答案:

答案 0 :(得分:1)

基于某些googling ...

您的问题听起来像是一个类路径问题。

确认您的类路径中只有mail.jar和activation.jar的一个版本。

答案 1 :(得分:1)

在我看来,您缺少将传输协议设置为smtp的属性设置

  properties.put("mail.transport.protocol", "smtp");