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

问题描述 投票:0回答:1

嗨,我正在尝试将List转换为字符串数组,并使用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);
    }

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

enter image description here

这里是模型类

预订课程

@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

}

这里是与会者班

@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

}

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

enter image description here

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

java spring-boot javamail
1个回答
3
投票
尝试使用以下代码。

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()将为您提供与与会者对象,该对象在错误电子邮件中也可见(hashCode)。

添加:在Java 8上>]String[] emails = attendees.stream().map(a -> a.getAttendeesEmail()).toArray(String[]::new);

© www.soinside.com 2019 - 2024. All rights reserved.