Java 如何在春季向多个收件人发送电子邮件

Java 如何在春季向多个收件人发送电子邮件,java,spring,email,Java,Spring,Email,电子邮件仅发送到字符串[]to数组中的最后一个电子邮件地址。我打算发送到所有添加到阵列的电子邮件地址。我怎样才能做到这一点 public void sendMail(String from, String[] to, String subject, String msg, List attachments) throws MessagingException { // Creating message sender.setHost("smtp.gmail.com");

电子邮件仅发送到
字符串[]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);
}
public void sendMail(String from,String[]to,String subject,String msg,List attachments)抛出MessaginException{
//创建消息
sender.setHost(“smtp.gmail.com”);
MimeMessage mimeMsg=sender.createMimeMessage();
MimeMessageHelper=新的MimeMessageHelper(mimeMsg,true);
Properties props=新属性();
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.seto(to);
helper.setSubject(subject);

helper.setText(msg+“hi welcome您可以选择使用以下4种方法。我提供了这两种方法在本例中很有用的示例。我从下面的评论员那里整合了这些信息

helper.setTo(InternetAddress.parse("email1@test.com,email2@test.com"))
helper.setTo(new String[]{"email1@test.com", "email2@test.com"});


真的

设置
mail.smtp.sendportial
true。我确信它对您有用我认为更好的方法是在spring.xml文件中将“to”属性声明为数组,传递值并使用方法
setTo(string[])
,正如Deinum在注释中建议的那样。过程是在xml文件中将“to”定义为

<property name="to">
    <array>
    <value>abc@gmail.com</value>
    <value>xyz@gmail.com</value>
    </array>
</property>

更好的方法是创建一个包含多个收件人地址的数组

    MimeMessageHelper helper = new MimeMessageHelper( message, true );
    helper.setTo( String[] to );

你可以试试这个,而不是

helper.setTo(to);

String multipleEmailIds = "abc@abc.com, abc@abc.com"
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(multipleEmailIds ));
就这样试试吧

helper.setTo(InternetAddress.parse("email1@test.com,email2@test.com")) 

在字符串[]数组中添加所有电子邮件ID

public String[] sendEmailIds() {
String[] emailIds = new String[4];
emailIds[0] = "abc@mail.com";
emailIds[1] = "deg@mail.com";
emailIds[2] = "sgh@mail.com";
emailIds[3] = "hht@mail.com";
return emailIds;
}

SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo(sendEmailIds());
mailMessage.setSubject(subject);
mailMessage.setText(message);
mailMessage.setFrom(fromEmailAddress);
javaMailSender.send(mailMessage);

它与SimpleEmailMessage配合得很好。 我喜欢你的答案


假设调用了正确的方法(
setTo(String[])
one),它应该可以工作。我不明白的是,为什么要在配置中设置此方法中的会话属性和主机。第二个方法不工作(字符串中有逗号分隔的值)@naXa你为什么这么认为?我刚刚测试过。我得到了
地址异常:非法地址
@naXa原因不能是
to
中逗号分隔的值问题一定是其他问题thing@Downvoter.感谢您在没有解释的情况下进行向下投票。您好。添加字符串数组是否适用于向多个收件人发送邮件?当我dded这行代码我看到synthax错误“意外令牌”
helper.setTo(InternetAddress.parse("email1@test.com,email2@test.com")) 
public String[] sendEmailIds() {
String[] emailIds = new String[4];
emailIds[0] = "abc@mail.com";
emailIds[1] = "deg@mail.com";
emailIds[2] = "sgh@mail.com";
emailIds[3] = "hht@mail.com";
return emailIds;
}

SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo(sendEmailIds());
mailMessage.setSubject(subject);
mailMessage.setText(message);
mailMessage.setFrom(fromEmailAddress);
javaMailSender.send(mailMessage);
String[] to = {"user1@gmail.com", "user2@gmail.com"};
        
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(to);
simpleMailMessage.setSubject("subject of mail");
simpleMailMessage.setText("content of mail");

try {
    javaMailSender.send(simpleMailMessage);
} catch (MailSendException e) {
     //...
}