画像を添付してメールを送信したい。私は速度テンプレートでSpring 3を使用しています。それはできますが、画像名に拡張子を追加すると、何らかの理由でメールが配信されません。
以下は、私が使用しているコードです。
private MimeMessage createEmail(Application application, String templatePath, String subject, String toEmail, String fromEmail, String fromName) {
MimeMessage mimeMsg = mailSender.createMimeMessage();
Map<String, Object> model = new HashMap<String, Object>();
model.put("application", application);
String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templatePath, model);
text = text.replaceAll("\n", "<br>");
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true);
helper.setSubject(subject);
helper.setTo(toEmail);
if (fromName == null) {
helper.setFrom(fromEmail);
} else {
try {
helper.setFrom(fromEmail, fromName);
} catch (UnsupportedEncodingException e) {
helper.setFrom(fromEmail);
}
}
helper.setSentDate(application.getDateCreated());
helper.setText(text, true);
InputStream inputStream = servletContext.getResourceAsStream("images/formstack1.jpg");
helper.addAttachment("formstack1", new ByteArrayResource(IOUtils.toByteArray(inputStream)));
} catch (MessagingException e) {
throw new RuntimeException(e);
}
catch (IOException e) {
throw new RuntimeException(e);
}
return mimeMsg;
}
上記のコードを使用すると、formstack1を添付ファイルとして追加できますが、拡張子がないため、formstack1.jpg画像ファイルを取得できません。しかし、添付するリソースの名前にformstack1.jpghelper.addAttachment("formstack1", new ByteArrayResource(IOUtils.toByteArray(inputStream)));
を使用すると、 formstack1 が変更されたformstack1.jpg
ときに、メールが配信されません。smtp.gmail.com
ポートにandを使用し25
ています。ただし、コンソールに電子メールが正常に送信されたというメッセージが表示されます。しかし、メールは決して配信されません。
編集:添付の画像をダウンロードしているときに、そのままhelper.addAttachment("formstack1", new ByteArrayResource(IOUtils.toByteArray(inputStream)));
にして拡張子を何もないものから.jpgに変更すると、目的の画像が得られます。
なぜそれが起こっているのか、そしてSpring 3を使用して1つ以上の添付ファイルを含む電子メールを送信する方法を誰かが理解するのを手伝ってくれますか.
ありがとう。