Как вставить для заявления в сообщении электронной почты Java

0

Я создал html-страницу с динамическими добавлениями строк. Я создал массив строк, чтобы получить значения в сервлет. И теперь я пытаюсь отправить электронное письмо себе со всеми этими значениями. Для этого я использую java mail API в своем сервлете. Как я могу передать строку массивов в message.setText();

Если это невозможно, каковы разные способы отправки электронной почты с помощью массива строк.

String[] items = request.getParameterValues("Item");
    String[] categories = request.getParameterValues("Category");
    String[] names = request.getParameterValues("Name");
    String[] quantities = request.getParameterValues("Quantity");

    System.out.println("************ExperimentServlet************");

    for (String item : items) {
    System.out.println("Item is : "+item);
    }

    for(String category : categories) {
    System.out.println("Category is : "+category);
    }

    for(String name : names) {
    System.out.println("Name is : "+name);
    }

    for(String quantity : quantities) {
    System.out.println("Quantity is : "+quantity);
    }


    for(int i=0; i<20; i++) {
        System.out.println("Item 1 is :" + items[i]);
        System.out.println("Category 1 is :"+ categories[i]);
        System.out.println("Name 1 is :"+ names[i]);
        System.out.println("Quantity 1 is : "+quantities[i]);

    }

Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("[email protected]", "xyz");
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("[email protected]"));
        message.setSubject("My eMail First Example");
        message.setText("Dear Mail Crawler,"
                + "\n\n No spam to my email, please!"
           + "\n\n" + items[i] + "  " + categories[i]+ "    "+ names[i]+ "  "+ quantities[i]


                );

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

}

Если я это сделаю, я могу отправить электронное письмо со значениями менее 20 наборов значений, но дело в том, что он отображает исключение индекса массива из пределов, если я поставляю менее 20 наборов значений. Нет гарантии, что каждый пользователь поставит 20 наборов значений.

  • 2
    Что не так с подготовкой строки из этого массива? Итерируйте по массиву и подготовьте строку.
  • 0
    Посылает файл CSV (аттакция) с необходимыми данными, и вы можете забыть о HTML-сообщении (только если захотите).
Показать ещё 6 комментариев
Теги:
servlets
email

2 ответа

1
Лучший ответ

Попробуйте следующие примеры сайтов, которые могут вам помочь

http://www.springbyexample.org/examples/velocity-email-template.html

http://www.vogella.com/articles/FreeMarker/article.html

  • 0
    Я не могу дать строки прямо, как это. Поскольку я добавляю строки в HTML-страницу, как я могу узнать, сколько наборов значений предоставлено пользователем. Так что я не могу этого сделать. Я отправил свой код, просто пройдите один раз.
  • 0
    В таком случае используйте Velocity или freemarker, которые могут вам помочь.
1

В HTML нет петель.

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

Используйте Velocity для создания электронной почты на основе HTML

  • 2
    Вы неправильно поняли вопрос? Или я?
  • 0
    @ sᴜʀᴇsʜᴀᴛᴛᴀ Сервлет - это не то место, где можно генерировать HTML-контент для электронной почты. По причинам обслуживания лучше будет использовать HTML-шаблон, использующий скорость или другую библиотеку. Помните, что в MVC логика представления должна находиться в представлении, в данном случае в генераторе HTML электронной почты, а сервлет - это контроллер, который просто собирает данные, которые будут использоваться в представлении.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню