我正在使用java来获取邮件消息并将该消息持久保存到文件中。当我再次阅读文件时,我收到了一个javax.mail.internet.AddressException
以下是我用来编写消息的代码
Properties mailProps = System.getProperties();
mailProps.setProperty("mail.store.protocol", "imaps");
Session session = null;
Folder inbox = null;
Store store = null;
Message[] messages = null;
try {
session = Session.getDefaultInstance(mailProps, null);
store = session.getStore("imaps");
store.connect(config.getMailHost(), config.getMailUserId(), config.getMailPasswd());
inbox = store.getFolder("inbox");
inbox.open(Folder.READ_WRITE); // Folder.READ_ONLY
logger.info("Total Messages found on Host: <{}>", inbox.getMessageCount());
logger.info("Total Unread Messages on Host: <{}>", inbox.getUnreadMessageCount());
messages = inbox.getMessages();
for (Message currMessage : messages) {
File mailFile = buildMailFileName();
currMessage.writeTo(new FileOutputStream(mailFile));
}
}
我可以看到文件已创建并包含以下行:
收件人:Name@domain.com;
当我再次阅读文件时,我收到以下错误:
javax.mail.internet.AddressException:非法分号,不在字符串'Name @ domain 中的组中。
以下是我用来读取文件的代码:
Session session = Session.getDefaultInstance(mailProps, null);
FileInputStream fis = new FileInputStream(mailFile);
MimeMessage mime = new MimeMessage(null, fis);
Address[] addresses = mime.getRecipients(Message.RecipientType.TO);
答案 0 :(得分:4)
不允许使用分号作为电子邮件地址的分隔符,而是使用逗号!
答案 1 :(得分:2)
用于解析电子邮件地址的InternetAddress类使用逗号而不是分号
因此,当您使用semicolon
写入文件更改comma
时,您将Name@domain.com,
代替Name@domain.com;