0

收到错误为“方法尚未实现的 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)
4

3 回答 3

1

请确保java邮件依赖低于1,

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

因为还有另一个 jar 包含该javax.mail.* 包低于 2,

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

解决方案是将第二个依赖项替换为第一个依赖项

于 2016-07-14T00:03:23.673 回答
0

改用 message.addRecipients() ,它已实现。JAVAMAIL API REFERENCE IMPLEMENTATION 不实现末尾没有“s”的方法。查看从下载的源

https://java.net/projects/javamail/downloads/directory/source

于 2014-05-20T13:33:23.507 回答
0

您已经犯了一些常见的 JavaMail 错误。JavaMail FAQ 也有其他示例可能对您有所帮助。

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

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

于 2013-02-25T23:58:39.313 回答