Как отправить электронное письмо нескольким получателям в Spring
Отправка электронной почты происходит только до последнего адреса электронной почты в массиве String[] to
. Я собираюсь отправить все адреса электронной почты, добавленные в массив. Как я могу выполнить эту работу?
public void sendMail(String from, String[] to, String subject, String msg, List attachments) throws MessagingException {
// Creating message
sender.setHost("smtp.gmail.com");
MimeMessage mimeMsg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true);
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "425");
Session session = Session.getDefaultInstance(props, null);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(msg + "<html><body><h1>hi welcome</h1><body></html", true);
Iterator it = attachments.iterator();
while (it.hasNext()) {
FileSystemResource file = new FileSystemResource(new File((String) it.next()));
helper.addAttachment(file.getFilename(), file);
}
// Sending message
sender.send(mimeMsg);
}
Ответы
Ответ 1
У вас есть выбор, чтобы использовать следующие 4 метода. Я привел примеры двух методов, полезных в этом случае. Я собрал эту информацию от комментаторов ниже.
helper.setTo(InternetAddress.parse("[email protected],[email protected]"))
helper.setTo(new String[]{"[email protected]", "[email protected]"});
![enter image description here]()
Ответ 2
Лучший подход заключается в создании массива, содержащего адрес нескольких получателей.
MimeMessageHelper helper = new MimeMessageHelper( message, true );
helper.setTo( String[] to );
Ответ 3
просто попробуй вот так.
helper.setTo(InternetAddress.parse("[email protected],[email protected]"))
Ответ 4
Вы можете попробовать это, а не
helper.setTo(to);
String multipleEmailIds = "[email protected], [email protected]"
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(multipleEmailIds ));
Ответ 5
Я думаю, что лучший подход состоит в том, чтобы объявить "к" атрибутом как массив в файле spring.xml, передать значения и использовать метод setTo(string[])
, как было предложено Deinum в комментарии. Процесс определяет 'to' в xml файле как
<property name="to">
<array>
<value>[email protected]</value>
<value>[email protected]</value>
</array>
</property>
Теперь создайте метод set getter для этого массива, содержащий адрес нескольких получателей, и передайте его методу setTo(string[])
как: -
helper.setTo(to);
Ответ 6
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.ccc.corp"/>
<property name="port" value="25"/>
<property name="javaMailProperties"><props>
<prop key="mail.smtp.sendpartial">true</prop>
</props></property>
</bean>
установить mail.smtp.sendpartial
true. Я уверен, что его работа для вас