2013-02-25 81 views
0

得到错误的 “方法尚未实现的MimeMessage”Java邮件法尚未实施的MimeMessage

尝试发送电子邮件

protected static void addAtachments(String[] attachments, Multipart multipart) throws MessagingException, MessagingException { 

    for (int i = 0; i <= attachments.length - 1; i++) { 
    String filename = attachments[i]; 
    MimeBodyPart attachmentBodyPart = new MimeBodyPart(); 

    DataSource source = new FileDataSource(filename); 
    attachmentBodyPart.setDataHandler(new DataHandler(source)); 

    attachmentBodyPart.setFileName(filename); 
    multipart.addBodyPart(attachmentBodyPart); 
}} 



    protected static void sendMessage(List<String> recipients, String subject, 
           String messageContent, String from, String[] attachments) 
    throws MessagingException, MessagingException { 
boolean debug = false; 

Properties props = new Properties(); 
props.put("mail.smtp.host", SMTP_HOST_NAME); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.debug", "true"); 
props.put("mail.smtp.port", SMTP_PORT); 
props.put("mail.smtp.socketFactory.port", SMTP_PORT); 
props.put("mail.smtp.socketFactory.fallback", "false"); 

Session session = Session.getDefaultInstance(props, 
     new Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("xxxxx", "xxxxxx"); 
      } 
     }); 

session.setDebug(debug); 

Message message = new MimeMessage(session); 
InternetAddress addressFrom = new InternetAddress(from); 
message.setFrom(addressFrom); 

for (String recipient : recipients) { 
    message.addRecipient(Message.RecipientType.TO, 
      new InternetAddress(recipient)); 
} 

message.setSubject(subject); 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart.setContent(messageContent, "text/html"); 
Multipart multipart = new MimeMultipart(); 
multipart.addBodyPart(messageBodyPart); 
addAtachments(attachments, multipart); 

message.setContent(multipart); 
Transport.send(message);} 

异常

Exception in thread "main" java.lang.UnsupportedOperationException: Method not yet implemented 
at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:89) 
at uk.co.newsint.bp.reg.report.Main.sendMessage(Main.java:84) 
at uk.co.newsint.bp.reg.report.Main.main(Main.java:36) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
+0

尝试使用MimeMessageHelper:\t \t \t \t \t的MimeMessage消息= mailSender.createMimeMessage(); \t \t \t \t \t MimeMessageHelper helper = new MimeMessageHelper(message,true,“UTF-8”); – Lyrion 2013-02-25 10:34:42

+0

你是否解决了这个问题?我尝试使用MimeMessageHelper:MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message,true,“UTF-8”);但仍然有问题。 – flower 2017-12-31 14:30:04

回答

0

你让一些common JavaMail mistakes。 JavaMail常见问题也有其他例子可以帮助你。

目前尚不清楚这些与您遇到的异常有什么关系。你使用的是什么版本的JavaMail?

如果您在IntelliJ之外运行应用程序,该应用程序是否也会失败?

+0

是的,它也在IntelliJ外面失败。 javax.mail 1.4.5 – KingArasan 2013-03-13 17:28:41

+0

需要您的环境的更多细节。当你在IntelliJ之外运行它时,你如何运行它?你的CLASSPATH中有什么?你在用什么JDK?您使用什么操作系统?你的CLASSPATH中有j2ee.jar或javaee.jar吗? – 2013-03-14 07:04:24

1

下载的请确保Java邮件依赖性低于 1来源,

<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4.7</version>` 
</dependency> 

,因为还有另一个罐子包括了javax.mail.* 包低于 2,

<dependency> 
    <groupId>geronimo-spec</groupId> 
    <artifactId>geronimo-spec-j2ee</artifactId> 
    <version>1.4-rc4</version>` 
</dependency> 

解决方法是更换第二依赖与第一个

+0

如何用第一个依赖替换第二个依赖? – flower 2017-12-31 14:06:40

+0

我发现geronimo-spec来自activiti-engine.I不能取代它。我正在使用activiti。 @ user6586945 – flower 2017-12-31 14:28:00