首页 > 解决方案 > 在 java 中使用 mailGun API 将 InputStreamSource 作为附件发送

问题描述

我正在尝试发送带有附件的电子邮件,我的附件存储在 AWS 中,我下载它们并将它们存储在 HashMap<String,InputStreamSource> 中:下面是我的代码:

当我发送电子邮件时,邮件没有送达,我也没有任何错误消息。请建议是否有任何解决方法。

public void sendSimpleMessageWithAttachment(String from, String to, String subject, String content, boolean isHtml, Map<String, InputStreamSource> attachments) throws UnirestException {

        // Prepare message using a Spring helper
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper message =  new MimeMessageHelper(mimeMessage, true, CharEncoding.UTF_8);
            attachments.forEach((k, v) -> {
                try {
                    message.addAttachment(k, v);
                } catch (MessagingException e) {
                    log.warn("Attachment could not be added to the email '{}', '{}'", subject, k);
                }
            });
            HttpResponse<JsonNode> request = Unirest.post("https://api.mailgun.net/v3/" + "DOMAIN.com" + "/messages.mime")
                .basicAuth("api", "key-XXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                .header("content-type", "multipart/form-data")
                .field("from",from)
                .field("to", to)
                .field("subject", subject)
                .field("html", content)
                .field("message",message)
                .asJson();
            log.info("Response : Message" +String.valueOf(request.getBody()));
        } catch (Exception e) {
            if (log.isDebugEnabled()) {
                log.warn("Email could not be sent to user '{}'", to, e);
            } else {
                log.warn("Email could not be sent to user '{}': {}", to, e.getMessage());
            }
        }
 
    } 

标签: javaemailmailgununirestmime-message

解决方案


推荐阅读