Можно ли отправить более одного многочастного ребенка по электронной почте через SMTP Exhange, а второй не станет вложением? - PullRequest
0 голосов
/ 31 января 2020

У меня есть некоторый код Javamail, который работал нормально в течение года или около того на SMTP-сервере 365 вне офиса. Недавно сервер был изменен на офис 365, и вторая многокомпонентная / альтернативная версия заканчивается двумя вложениями при отправке. Я пробовал много комбинаций вещей, которые я нашел на этом форуме и других, но ни одна не избавилась от вложений. Мои мысли сейчас склоняются к тому, что я не могу заставить это работать так, как мне хотелось бы. Мой фрагмент кода ниже. Извините, это мой первый пост, и не думаю, что я все правильно собрал. Я добавил два оператора setDisposition в надежде, что это поможет, но это не так. Расположение изменяется SMTP-сервером на «Вложение». Кто-нибудь знает, нормально ли это для офиса 365 или может дать мне несколько советов? Я определенно не эксперт по электронной почте. Спасибо.

try
    {
        Message forward = new MimeMessage(smtpSession);
        String subject = message.getSubject();
        forward.setFrom(new InternetAddress(fromEmailAddress));
        setForwardingValues(forward, subject);
        MimeBodyPart messageBodyPartForwardText = addEmailText(); 
        MimeBodyPart messageBodyPartForwardHtml = addEmailHtml();
        MimeBodyPart messageBodyPartHtml = getPartsToInclude(message, "html");
        messageBodyPartHtml.setDisposition(Part.INLINE);
        MimeBodyPart messageBodyPartText = getPartsToInclude(message, "text");
        messageBodyPartText.setDisposition(Part.INLINE);
        MimeMultipart mainMultipart = new MimeMultipart("mixed");
        MimeMultipart multipart1 = new MimeMultipart("alternative");
        MimeMultipart multipart2 = new MimeMultipart("alternative");
        if (messageBodyPartForwardText != null)
        {
            multipart1.addBodyPart(messageBodyPartForwardText);
        }
        if (messageBodyPartForwardHtml != null)
        {
            multipart1.addBodyPart(messageBodyPartForwardHtml);
        }
        if (messageBodyPartText != null)
        {
            multipart2.addBodyPart(messageBodyPartText);
        }
        if (messageBodyPartHtml != null)
        {
            multipart2.addBodyPart(messageBodyPartHtml);
        }
        if (multipart1.getCount() > 0)
        {
            MimeBodyPart part1 = new MimeBodyPart();
            part1.setContent(multipart1);
            mainMultipart.addBodyPart(part1);
        }
        if (multipart2.getCount() > 0)
        {
            MimeBodyPart part2 = new MimeBodyPart();
            part2.setContent(multipart2);
            mainMultipart.addBodyPart(part2);
        }
        if (attachmentFileName != null)
        {
            MimeBodyPart attachmentBodyPart = new MimeBodyPart();
            DataSource attachment = new FileDataSource(attachmentDir + "/" +attachmentFileName);
            attachmentBodyPart.setDataHandler(new DataHandler(attachment));
            attachmentBodyPart.setFileName(attachmentFileName);
            mainMultipart.addBodyPart(attachmentBodyPart);
        }
        forward.setContent(mainMultipart);
        forward.saveChanges();
        Transport t = smtpSession.getTransport();
...