我正在尝试使用 commons api 发送电子邮件,但是出现错误!
这是 Commons 指南的示例,但是,我无法发送到这里..
public class Emailsss {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws EmailException, MalformedURLException {
// TODO code application logic here
// Create the email message
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("username", "mypw"));
email.setSSLOnConnect(true);
email.setFrom("username");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("to");
URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = email.embed(url, "Apache logo");
email.setHtmlMsg("<html>The apache logo - <img src=\"cid:"+cid+"\"></html>");
email.setTextMsg("Your email client does not support HTML messages");
// send the email
email.send();
}
}
这是我的错误:
Exception in thread "main" java.lang.NoSuchMethodError:
javax.mail.internet.MimeBodyPart.setText(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
at org.apache.commons.mail.HtmlEmail.build(HtmlEmail.java:581)
at org.apache.commons.mail.HtmlEmail.buildMimeMessage(HtmlEmail.java:519)
at org.apache.commons.mail.Email.send(Email.java:1436)
at emailsss.Emailsss.main(Emailsss.java:46)
Java Result: 1
最佳答案
您可能需要 javax 邮件包,可以在(例如)http://repo1.maven.org/maven2/javax/mail/mail/1.4/mail-1.4.jar 找到该包。
<小时/>如果您正在使用 Maven 本身进行构建(您没有说是,但使用依赖项管理器是一件好事,并且可能会解决您的问题...)
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
如果您注意到 org.apache.commons 的 Maven 依赖项你会看到:
这个工件取决于...
- javax.mail
如果您使用过 Maven,则 pom file对于 org.apache.commons,javax.mail 作为第一个依赖项。
综上所述,下载 http://repo1.maven.org/maven2/javax/mail/mail/1.4/mail-1.4.jar 的链接将其包含在您的类路径中,您应该会很好。
<小时/>在讨论这个主题时,您可能希望阅读javax vs java package 这回答了为什么 javax 与 java 包不同并分开的问题。
关于Java 电子邮件与 Commons Mail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114408/