Java 向具有不同内容的多个收件人发送电子邮件

Java 向具有不同内容的多个收件人发送电子邮件,java,jakarta-mail,sendmail,Java,Jakarta Mail,Sendmail,我正在尝试使用JavaMail向多个收件人发送邮件。每个消息的内容都是不同的。该程序向不同的收件人发送一封内容相同的电子邮件。有人能帮我吗。她是我的源代码 public static void postMail(String[] recipients, String subject, Timestamp time)throws MessagingException { String nachricht = null; String link = null; Session session

我正在尝试使用JavaMail向多个收件人发送邮件。每个消息的内容都是不同的。该程序向不同的收件人发送一封内容相同的电子邮件。有人能帮我吗。她是我的源代码

public static void postMail(String[] recipients, String subject, Timestamp time)throws MessagingException {
 String nachricht = null;
 String link = null;
 Session session = MailUtil.getGMailSession("username", "password");
 Message msg = new MimeMessage(session);

 msg.setSubject(subject);


for(int i=0; i<=recipients.length-1;i++){
 System.out.println(recipients[i]);
 link = recipients[i] + "/" + time; 
 msg.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients[i]));
}//endOf forSchleife
message = link
msg.setContent(message, "text/plain");
Transport.send(msg);
}
publicstaticvoidpostmail(字符串[]收件人、字符串主题、时间戳时间)抛出MessaginException{
字符串nachricht=null;
字符串链接=null;
Session Session=MailUtil.getGMailSession(“用户名”、“密码”);
Message msg=新的mimessage(会话);
msg.setSubject(主题);
对于(int i=0;i
我认为代码应该如下所示:

for(int i=0;i当我将其写入for循环时,我会遇到与以前相同的问题。向每个具有相同内容的收件人发送一封邮件。但是每个收件人都应该从电子邮件地址和时间戳获得自己的链接。您还应该放置Transport.send(msg);在for循环中。您在此处所做的是向多个收件人发送一封电子邮件,其中包含上一个收件人的邮件。不可能同时向多个收件人发送包含不同邮件的电子邮件。请查看更新的答案。当我放置Transport.send(msg)时在for循环中,然后将程序发送给最近的三封邮件。这是不对的。你能帮助我吗。我已经更新了我的答案,你能检查它是否有效吗?我认为现在应该可以了。还请查看以下文档:。它说:setRecipient-设置收件人地址。s的所有地址指定的类型将替换为address参数;addRecipient-将这些收件人地址添加到给定类型的现有收件人地址。
I think that the code should be like below:

    for(int i=0; i<=recipients.length-1;i++){
         Message msg = new MimeMessage(session);
         msg.setSubject(subject);
         System.out.println(recipients[i]);
         link = recipients[i] + "/" + time; 
         //msg.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients[i]));
         //Try this please            
         msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients[i]));

message = link
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }//endOf forSchleife
inside of the for loop...