将 List<Object> 转换为字符串数组并使用 java 邮件将电子邮件发送到多个地址

converting List<Object> to string array and sending email to multiple address using java mail

嗨,我正在尝试将列表转换为字符串数组并使用 java 邮件发送多个与会者的电子邮件,但它似乎不起作用,我做对了还是不需要建议这里是代码谢谢

    @PostMapping(path = "/createBooking/{location}")
    public ResponseEntity<String> create(@PathVariable(value = "location") String location,
            @Validated @RequestBody Booking book) {
        book.setStatus("reserved");
        book.setBookingCode(generatedString);

        bookingRepository.save(book);

        MimeMessage message = sender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message);
        StringBuilder sb = new StringBuilder();

        try {

            String[] array = new String[book.getAtt().size()]; 
            int index = array.length;
            for (Object value : book.getAtt()) { 
                array[index] = String.valueOf( value );
                helper.setTo(array[index]);
            }
            sb.append("Agenda:" + " " + book.getBookingDesc()).append(System.lineSeparator());
            sb.append("When:" +  " " + book.getDateBooked() + " " + book.getStartTime() + " " + "To" + " " + book.getEndTime())
                    .append(System.lineSeparator());
            sb.append("Where:" + " " + location).append(System.lineSeparator());
            sb.append("By:" + " " + book.getBookedUser()).append(System.lineSeparator());
            sb.append("Booking code:" + " " + generatedString);
            helper.setText(sb.toString());
            helper.setSubject("Meeting");
        } catch (MessagingException e) {
            e.printStackTrace();
            return new ResponseEntity<>("Error while sending mail ..", HttpStatus.BAD_REQUEST);
        }
        sender.send(message);

        return new ResponseEntity<>("Inputs have been saved", HttpStatus.OK);
    }

这是电子邮件中显示的错误

这是模型 classes

预订class

@Entity
public class Booking implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long bookingId;

    private String bookingDesc;

    private String bookedUser;

    private String bookedUserName;

    private String bookedEmail;

    private String bookingCode;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate dateBooked;

    @JsonFormat(pattern="HH:mm:ss", timezone = "GMT+8")
    private Time startTime;

    @JsonFormat(pattern="HH:mm:ss", timezone = "GMT+8")
    private Time endTime;

    private String status;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "booking_id")
    private List<Attendees> att = new ArrayList<Attendees>();

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "room_booked")
    private Room room;
// setters getters

}

这是与会者class

@Entity
@Table(name = "ref_attendees")
public class Attendees implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idRefAttendees;

    private String attendeesEmail;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "trans_id")
    private Transaction tras;

    @ManyToOne(cascade = CascadeType.ALL)
    private Booking booking;
//setters getters

}

这是我使用邮递员传递数据的方式

编辑:我添加了与问题相关的模型并添加了邮递员

尝试使用以下代码。

List<Attendees> attendees = book.getAtt();
for (int i=0;i<attendees.size();i++) { 
    array[i] = attendees.get(i).getAttendeesEmail();
}
helper.setTo(array);

book.getAtt().getAttendeesEmail() 将为您提供电子邮件 ID,但 book.getAtt() 将为您提供错误电子邮件中可见的 Attendees 对象(哈希码)。

加法:在Java8

String[] emails = attendees.stream().map(a -> a.getAttendeesEmail()).toArray(String[]::new);