Отправка комбинированных текстовых / HTML-писем с помощью Spring и JavaMail - PullRequest
5 голосов
/ 21 сентября 2011

В настоящее время я использую JavaMail и Spring для отправки электронной почты в HTML.Как это происходит, HTML генерируется некоторыми моими шаблонами Velocity, и код отправки примерно такой:

MimeMessagePreparator preparator = new MimeMessagePreparator() {

    @Override public void prepare(MimeMessage mimeMessage) throws Exception {
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage, "UTF-8");

            message.setSubject(msgInfo.getSubject());
            message.setFrom(msgInfo.getFrom());
            message.setReplyTo(msgInfo.getFrom());
            message.setTo(address);
            message.setText(someText, true);
    }
}

mailSender.send(preparator);

Это прекрасно работает, но отправляет почту только с одной частью как text/html.Что мне нужно, это отправить его в многочастном варианте с текстовой частью.Есть ли способ, используя Spring и JavaMail, сделать это автоматически?

PS В прошлой жизни, когда я программировал на VB и CDONTS, это было встроено, но я не могу найти простой способ сделать это с Java.Не очень важно, чтобы текстовая версия выглядела хорошо, она просто должна существовать.Чего я пытаюсь избежать, так это того, что мне приходится поддерживать целый второй набор шаблонов Velocity.

Ответы [ 2 ]

8 голосов
/ 21 сентября 2011

Чтобы отправить части текста и HTML, вам нужно использовать другой метод setText: void setText(String plainText, String htmlText). Если вы настраиваете обычный текст для своего содержимого HTML, возможно, вам придется проанализировать HTML, чтобы удалить теги HTML.

0 голосов
/ 23 февраля 2017
try {

    // Email data
    String Email_Id = "samarthaniket16@gmail.com"; // change to your
                                                    // email ID
    String password = "Your PSWD"; // change to your password
    String recipient_mail_id = "samarthaniket16@gmail.com"; // change to
                                                            // recipient
                                                            // email id
    String mail_subject = "Attendance Report";

    // Set mail properties
    Properties props = System.getProperties();
    String host_name = "smtp.gmail.com";
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host_name);
    props.put("mail.smtp.user", Email_Id);
    props.put("mail.smtp.password", password);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");

    Session session = Session.getDefaultInstance(props);
    MimeMessage message = new MimeMessage(session);

    try {
        // Set email data
        message.setFrom(new InternetAddress(Email_Id));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient_mail_id));
        message.setSubject(mail_subject);
        MimeMultipart multipart = new MimeMultipart();
        BodyPart messageBodyPart = new MimeBodyPart();

        // Set key values
        Map<String, String> input = new HashMap<String, String>();
        input.put("User", name.toString());
        input.put("Date", date1);
        input.put("Content In", "English");
        input.put("Absent", absentUser);

        // HTML mail content
        // String htmlText =
        // readEmailFromHtml("/home/techwalnut-pc/mailTemplate.html",
        // input);
        String htmlText = readEmailFromHtml(
                "/home/techwalnut-pc/Development/Aniket/Techwalnut/Project/Java/Spring/Attendance_system/mailTemplate.html",
                input);
        messageBodyPart.setContent(htmlText, "text/html");

        multipart.addBodyPart(messageBodyPart);
        message.setContent(multipart);

        // Conect to smtp server and send Email
        Transport transport = session.getTransport("smtp");
        transport.connect(host_name, Email_Id, password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        System.out.println("Mail sent successfully...");

    } catch (MessagingException ex) {
    } catch (Exception ae) {
        ae.printStackTrace();
    }
} catch (Exception exception) {
   exception.printStackTrace();
}
...