慕田峪7331174
2023-06-14 16:03:21
我想在向收件人發(fā)送電子郵件時(shí)包含附件。我已經(jīng)能夠設(shè)置和獲取附件,但是當(dāng)從 Javaxmail 調(diào)用 attachFile 方法時(shí)出現(xiàn)錯(cuò)誤。此代碼是使用 javax 庫(kù)用 Java 編寫(xiě)的。一切似乎都很好,但失敗了。我也嘗試過(guò)添加編碼,但結(jié)果相同。當(dāng)調(diào)用 attachFile 方法時(shí),此代碼失敗。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函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
javax.mail
是多米諾骨牌上的地雷。它有點(diǎn)存在,通過(guò)“ndext”目錄中的“mail.jar”以及com.ibm.designer.lib.javamail
OSGi 領(lǐng)域中的插件,但這是規(guī)范的 1.3 版。不幸的是,您嘗試使用的方法是在 1.4 中添加的。
您可以通過(guò)為較新版本的 javax.mail 及其實(shí)現(xiàn)添加一個(gè) jar 來(lái)繞過(guò)它,但我還沒(méi)有嘗試過(guò),所以我不能肯定地說(shuō)。無(wú)論如何,這可能是您已經(jīng)嘗試過(guò)的,以訪問(wèn)這些課程。您還可以嘗試將此代碼放入 OSGi 插件中,并將 javax.mail jar 嵌入其中,或者將其作為版本范圍受限的外部 OSGi 插件。
您也可以使用 Notes API 發(fā)送電子郵件,盡管這樣您將使用 Domino 服務(wù)器而不是自定義 SMTP 服務(wù)器來(lái)路由電子郵件(除非 Domino 恰好被配置為通過(guò)該服務(wù)器路由)。
添加回答
舉報(bào)
0/150
提交
取消