1

画像を添付してメールを送信したい。私は速度テンプレートで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つ以上の添付ファイルを含む電子メールを送信する方法を誰かが理解するのを手伝ってくれますか.

ありがとう。

4

1 に答える 1

2

You should better use Apache Commons HtmlEMail

http://commons.apache.org/email/userguide.html

于 2012-06-03T16:23:33.837 に答える