Javaメールの添付ファイルはTomcatで動作しません
-
23-10-2019 - |
質問
確認を電子メールで送信するアプリケーションがあります。電子メールパーツは、Commons Mail APIを利用しています。送信メールを実行する単純なコードは、以下に示すようにです。
import org.apache.commons.mail.*;
...
// Create the attachment
EmailAttachment attachment = new EmailAttachment();
attachment.setURL(new URL("http://cashew.org/doc.pdf"));
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Testing attach");
attachment.setName("doc.pdf");
// Create the email message
MultiPartEmail email = new MultiPartEmail();
email.setHostName("mail.cashew.com");
email.addTo("ben@cashew.org");
email.setFrom("lot@cashew.org");
email.setSubject("Testing);
email.setMsg("testing message");
// add the attachment
email.attach(attachment);
// send the email
email.send();
私の問題は、Eclipseからこのアプリケーションを実行すると、問題なく添付ファイルで電子メールが送信されることです。しかし、アプリケーションをTomcatサーバーに展開するとき(私は持っています
バージョン5と6の両方を試してみてください)、電子メールは以下のコンテンツで送信されます。
------=_Part_0_25002283.1275298567928
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
testing
Regards,
los
------=_Part_0_25002283.1275298567928
Content-Type: application/pdf; name="doc.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="doc.pdf"
Content-Description: Testing attach
JVBERi0xLjQNJeLjz9MNCjYzIDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDMxMzE4Mi9PIDY1L0Ug
Mjg2NjY5L04gMS9UIDMxMTgwMi9IIFsgMjgzNiAzNzZdPj4NZW5kb2JqDSAgICAgICAgICAgICAg
DQp4cmVmDQo2MyAxMjcNCjAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMzM4MCAwMDAwMCBuDQow
MDAwMDAzNTIzIDAwMDAwIG4NCjAwMDAwMDQzMDcgMDAwMDAgbg0KMDAwMDAwNTEwOSAwMDAwMCBu
DQowMDAwMDA2Mjc5IDAwMDAwIG4NCjAwMDAwMDY0MTAgMDAwMDAgbg0KMDAwMDAwNjU0NiAwMDAw
MCBuDQowMDAwMDA3OTY3IDAwMDAwIG4NCjAwMDAwMDkwMjMgMDAwMDAgbg0KMDAwMDAwOTk0OSAw
MDAwMCBuDQowMDAwMDExMDAwIDAwMDAwIG4NCjAwMDAwMTIwNTkgMDAwMDAgbg0KMDAwMDAxMjky
MCAwMDAwMCBuDQowMDAwMDEyOTU0IDAwMDAwIG4NCjAwMDAwMTI5ODIgMDAwMDAgbg0KMDAwMDAx
.......
CnN0YXJ0eHJlZg0KMTE2DQolJUVPRg0K
------=_Part_0_25002283.1275298567928--
私が気づいたことの1つは、ヘッダー情報が表示されないこととサブジェクト値です。うーん、かなり奇妙です。上記はデバッグの生成されていない、それが私のOutlookクライアントで受け取られた実際のメッセージであることを指摘する必要があります。
誰かが私を助けてくれませんか!
アップデート: :アプリケーションは非常に簡単です。別々の部分としての部分とテキストメッセージも添付します。
public final void Email(String from, String to, String cc,
String subject, String message, String doc, String bcc) {
MultiPartEmail email = new MultiPartEmail();
try {
if (!(doc == null)) {
EmailAttachment attachment = new EmailAttachment();
attachment.setURL(new URL("http://cashew.org/doc.pdf"));
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Testing attach");
attachment.setName("doc.pdf");
email.attach(attachment);
}
email.setHostName("mail.cashew.com");
// [ Set Header details
email.setTo(getAddress(to));
email.setFrom(from);
email.setSubject(subject);
if (!(cc == null)) {
eEmail.setCc(getAddress(cc));
}
if (!(bcc == null)) {
email.setBcc(getAddress(bcc));
}
email.setMsg(message);
email.send();
} catch (Exception ex) {
ex.printStackTrace();
}
}
誰もが何が起こっているのか知っていますか?
解決
原因: :説明された問題は、Apache CXF 2または公理の推移的依存性によって引き起こされます。
解決: :この問題を解決するために、Geronimo-Javamail_1.4_Specをビルドから除外し、JavaxのMail-1.4.x.jarに依存しています。
<!--For Apache CXF 2 Project: Do this Exclude--> <dependency> <groupid>org.apache.cxf</groupid> <artifactid>cxf-rt-frontend-jaxws</artifactid> <version>2.2.6</version> <exclusions> <exclusion> <groupid>org.apache.geronimo.specs</groupid> <artifactid>geronimo-javamail_1.4_spec</artifactid> </exclusion> <exclusion> <groupid>org.apache.geronimo.specs</groupid> <artifactid>geronimo-activation_1.1_spec</artifactid> </exclusion> </exclusions> </dependency> <!--For Axis2 Project with Axiom Dependency: Do this Exclude--> <dependency> <groupid>org.apache.ws.commons.axiom</groupid> <artifactid>axiom-api</artifactid> <version>1.2.8</version> <exclusions> <exclusion> <groupid>org.apache.geronimo.specs</groupid> <artifactid>geronimo-activation_1.1_spec</artifactid> </exclusion> <exclusion> <groupid>org.apache.geronimo.specs</groupid> <artifactid>geronimo-javamail_1.4_spec</artifactid> </exclusion> </exclusions> </dependency>
所属していません StackOverflow