私は現在、データベースから取得した特定のアドレスに電子メールを送信する必要があるプロジェクトを行っています。ただし、データベースの「メール」列には、実際にはメールが含まれていませんが、代わりに名前が含まれています。したがって、データベースにはロシア語のフルネームがあります
「Ivanov Alexandr」である「Иванов Александр」。したがって、この名前を 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");
}
このコードでは、文字列メールは Иванов Александр です。
そして、私はこのエラーを受け取り続けました
javax.mail.internet.AddressException: ローカル アドレスの文字列 ``Иванов Александр'' にコントロールまたは空白が含まれています
この文字列を通過させる方法を知りたいです。
ありがとうございました。