gpt4 book ai didi

java - Java中使用数据库发送电子邮件

转载 作者:行者123 更新时间:2023-12-01 14:08:35 25 4
gpt4 key购买 nike

我目前正在做一个项目,需要我将电子邮件发送到从数据库中获取的特定地址。然而,数据库中的“电子邮件”列实际上并不包含电子邮件,而是包含姓名。所以在数据库中有俄语全名,例如

“Иванов Александр”即“伊万诺夫·亚历山大”。因此,当我在 Outlook 中输入此名称时,它会自动找到他的电子邮件:AIvanov@domainname.com。但是在我的java代码中,当我使用名称“Иванов Александр”时,我不断收到错误。

这是我的java代码

File[] listOfFiles = outDir.listFiles();
if (outDir.isDirectory()) {
if (outDir.list().length > 0) {
for (File file : listOfFiles) {
Session session_m = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session_m);
message.setFrom (new InternetAddress("mmm@domainname.com", "mmm@domainname.com"));
InternetAddress i = new InternetAddress("\""+email+"\"", false);
message.addRecipient(Message.RecipientType.TO, i);
message.setSubject("test");
message.setText("test");
message.setHeader("Content-Type","text/plain;charset=windows-1251");

MimeBodyPart mbp1 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(file);
mbp1.setDataHandler(new DataHandler(fds));
mbp1.setFileName(fds.getName());

Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);

System.out.println("[EmailHandler] Attaching the following file to email: " + fds.getName());
message.setContent(mp);

SMTPTransport t = (SMTPTransport)session_m.getTransport("smtp");
t.connect("mail.domainname.com", "main@domainname.com", null);
System.out.println("[EmailHandler] Sending email... ");
t.sendMessage(message, message.getAllRecipients());
file.delete();
Thread.sleep(3000);
}
} else {
System.out.println("[EmailHandler] Folder " + outDir.getName() + " is empty... nothing to attach");
}
} else {
System.out.println("Folder not found... Check the path");
}

在此代码中,字符串 email 是 Иванов Александр。

我一直收到这个错误

javax.mail.internet.AddressException:本地地址在字符串“Иванов Александр”中包含控制或空格

所以想知道如何让这个字符串通过。

谢谢。

最佳答案

Outlook 使用其地址簿将名称映射到其中一封电子邮件。这就是为什么它工作正常,如果您手动尝试创建新电子邮件并仅输入名称。 Outlook 只需在地址簿中进行查找并找出电子邮件地址即可。

但是,这与java程序不同。该程序需要准确的电子邮件地址才能发送电子邮件。现在可以有很多方法来查找电子邮件地址。

最简单的方法是将电子邮件地址存储在数据库表之一中。如果此人与公司的 SMTP 系统/Activity 目录关联;您可以使用java smtp API/Active Directory API来查找电子邮件或别名(通常是电子邮件ID@之前的部分),然后创建电子邮件ID以用于程序发送电子邮件。

关于java - Java中使用数据库发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714363/

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