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