gpt4 book ai didi

Java:字符串更改,因此 for 循环中所有项目的名称都更改

转载 作者:行者123 更新时间:2023-11-30 05:51:53 24 4
gpt4 key购买 nike

我有以下代码来发送包含多个部分的电子邮件

 public void sendEmail(String emailAddress, List<String> attachment) throws Exception{
Properties props = new Properties();

props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.host", SMTP_HOST_NAME);
props.put("mail.smtps.auth", "true");

Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(true);
Transport transport = mailSession.getTransport();

MimeMessage message = new MimeMessage(mailSession);
// message subject
message.setSubject("Automated email from Kieran Herley about Assignments");

message.addRecipient(Message.RecipientType.TO,
new InternetAddress(emailAddress));

Multipart multipart = new MimeMultipart();
MimeBodyPart messageBodyPart = new MimeBodyPart();

// message body
messageBodyPart.setText("This is just a message to say your assignment has been graded.\nAttached is a file with some pointers about your assignment");
multipart.addBodyPart(messageBodyPart);

messageBodyPart = new MimeBodyPart();

for (String singleFile : attachment) {
DataSource source = new FileDataSource(singleFile);
messageBodyPart.setDataHandler(new DataHandler(source));
String nameOfFile = singleFile.substring(singleFile.lastIndexOf('\\') + 1);
messageBodyPart.setFileName(nameOfFile);
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);


transport.connect(SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);

transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
}

一切正常,但我遇到的问题是在 for 循环中

for (String singleFile : attachment) {
DataSource source = new FileDataSource(singleFile);
messageBodyPart.setDataHandler(new DataHandler(source));
String nameOfFile = singleFile.substring(singleFile.lastIndexOf('\\') + 1);
messageBodyPart.setFileName(nameOfFile);
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);

我遇到的问题是,如果应用程序在 for 循环中循环 3 次,它会将附加到电子邮件的所有文件命名为第三次通过循环的文件的名称。邮件附件本身也是如此,即使是发送3个附件,它们的名称也是一样的。

这是因为所有三个附件都使用相同的变量来命名和检索它们,因此对于所有三个附件,它都命名它们并将它们设置为通过循环的最后一个。

有没有办法通过对所有电子邮件使用相同的名称变量和附件变量来设置每封电子邮件的名称和附件,或者我该怎么做?

在这种情况下使用

String singleFile --- for the attachment
String nameOfFile --- for the name of each file

最佳答案

for-each 循环中的字符串看起来没有问题。我担心您在为其分配数据处理程序和文件名时总是使用相同的 messageBodyPart 实例。尝试在循环内移动 messageBodyPart = new MimeBodyPart()

关于Java:字符串更改,因此 for 循环中所有项目的名称都更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com