为了账号安全,请及时绑定邮箱和手机立即绑定

Xpages - java.lang.NoSuchMethodError: javax/mail/

Xpages - java.lang.NoSuchMethodError: javax/mail/

慕田峪7331174 2023-06-14 16:03:21
我想在向收件人发送电子邮件时包含附件。我已经能够设置和获取附件,但是当从 Javaxmail 调用 attachFile 方法时出现错误。此代码是使用 javax 库用 Java 编写的。一切似乎都很好,但失败了。我也尝试过添加编码,但结果相同。当调用 attachFile 方法时,此代码失败。attachPart.attachFile(f); // fails here...try {Message msg = new MimeMessage(propsSess);msg.setFrom(new InternetAddress(this.defaultSenderAddress));setRecipient(msg, this.sendTo, "to");msg.setSubject(this.subject);msg.setContent(this.bodyHtml, "text/html");msg.setHeader("X-Mailer", "Java Agent");msg.setSentDate(new Date());if (!this.bodyAttach.isEmpty()) {    BodyPart messageText = new MimeBodyPart();    messageText.setText(this.bodyHtml);    Multipart multipart = new MimeMultipart();    multipart.addBodyPart(messageText);    // adds attachments     for (int index = 0; index < this.bodyAttach.size(); index++) {        MimeBodyPart attachPart = new MimeBodyPart();        try {            System.out.println(this.bodyAttach.get(index)); // shows only 1st attachments            File f = new File(this.bodyAttach.get(index));            attachPart.attachFile(f); // fails here...        } catch (IOException ex) {            ex.printStackTrace();        }        multipart.addBodyPart(attachPart);    }    // sets the multi-part as e-mail's content    msg.setContent(multipart);}SMTPTransport transport = (SMTPTransport) propsSess.getTransport("smtp");transport.connect(this.smtpServerAddress, null, null);if (transport.isConnected()) {    transport.sendMessage(msg, msg.getAllRecipients());    transport.close();    this.processMessage.add("success");}} catch (Exception e) {this.processMessage.add(databaseTitle + ": SmtpMail bean: Message or SMTPTransport error");return false;}
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

javax.mail是多米诺骨牌上的地雷。它有点存在,通过“ndext”目录中的“mail.jar”以及com.ibm.designer.lib.javamailOSGi 领域中的插件,但这是规范的 1.3 版。不幸的是,您尝试使用的方法是在 1.4 中添加的。

您可以通过为较新版本的 javax.mail 及其实现添加一个 jar 来绕过它,但我还没有尝试过,所以我不能肯定地说。无论如何,这可能是您已经尝试过的,以访问这些课程。您还可以尝试将此代码放入 OSGi 插件中,并将 javax.mail jar 嵌入其中,或者将其作为版本范围受限的外部 OSGi 插件。

您也可以使用 Notes API 发送电子邮件,尽管这样您将使用 Domino 服务器而不是自定义 SMTP 服务器来路由电子邮件(除非 Domino 恰好被配置为通过该服务器路由)。


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信