Отправка массива объектов с использованием Java-почты - PullRequest
0 голосов
/ 08 мая 2018
import java.util.Properties;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMailTLS extends Customer{






public SendMailTLS (){
   Customer customer = new Customer();
   //firstName = customer.getFirstName();
  // email = customer.getEmail();

}

public static void main(String[] args){
     final String username = "MCVJ.PizzaOrdering@gmail.com";
     final String password = "";

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    System.out.println(dateFormat.format(date));


    String email = "";
    String firstName = "Joe";
    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(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("MCVJ.PizzaOrdering@gmail.com")); // same email id
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("" + email + ""));// whome u have to send mails that person id
        message.setSubject("Thank You For Placing an Order with us! Below is your Order Receipt!");
        message.setText("..........."+ "\n"+
                dateFormat.format((date)) + "\n" +
                "............." + "\n" +
                "Dear "+ firstName  +" ,Below is your order receipt " + "\n"+

                "\n\n No spam to my email, please!");

        Transport.send(message);

        System.out.println("Done");

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

}

У меня есть arrayList объектов под названием orders [], в котором хранится заказ клиента (количество, название заказа и цена). После того, как заказ будет выполнен, я хотел бы отправить клиенту по электронной почте квитанцию ​​его / ее заказа. проблема в том, что я не знаю, как отправить массив с помощью .setText () в javaMail API.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Если вы хотите отправить детали заказа пользователю, то я думаю, что он должен быть в удобном для человека формате. Вы можете попробовать что-то вроде ниже:

Учитывая, что у вас есть Order класс, подобный этому, вы можете переопределить его toString() метод, чтобы преобразовать детали вашего заказа в String

public class Order {

    private long id;
    private String productName;
    private int quantity;
    private double price;

    @Override
    public String toString() {
        return "Order [id=" + id + ", productName=" + productName + ", quantity=" + quantity + ", price=" + price + "]";
    }
}

И затем в вашем методе sendEmail вы можете использовать этот toString() метод.

public static void main(String[] args){
    final String username = "MCVJ.PizzaOrdering@gmail.com";
    final String password = "";

   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date();
   System.out.println(dateFormat.format(date));


   String email = "";
   String firstName = "Joe";
   String content = "";
   List<Order> userOrders = null;
   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(username, password);
               }
           });

   try {

       Message message = new MimeMessage(session);
       message.setFrom(new InternetAddress("MCVJ.PizzaOrdering@gmail.com")); // same email id
       message.setRecipients(Message.RecipientType.TO,
               InternetAddress.parse("" + email + ""));// whome u have to send mails that person id
       message.setSubject("Thank You For Placing an Order with us! Below is your Order Receipt!");

       userOrders = databaseRepo.getUserOrders(userId); // You can replace this line however you are extracting user's data in your project

       content = "..........."+ "\n"+
            dateFormat.format((date)) + "\n" +
            "............." + "\n" +
            "Dear "+ firstName  +" ,Below is your order receipt " + "\n";

       for(Order order : userOrders){
            content += ""+order.toString()+"\n";
       }

       content += "\n\n No spam to my email, please!";

       message.setText(content);

       Transport.send(message);

       System.out.println("Done");

   } catch (MessagingException e) {
       throw new RuntimeException(e);
   }
}
0 голосов
/ 08 мая 2018

Вы можете установить отображение, как вы хотите.Например, переопределите toString в ArrayList и покажите его как хотите или используйте библиотеку json, чтобы сгенерировать строку json из arrayList.Таким образом, вы получите текст, читаемый человеком, из вашего arrayList, поместите этот текст в setText () и отправите.

...