我正在尝试使用JavaMaildir(http://sourceforge.net/projects/javamaildir/)在本地存储一些在线检索的电子邮件。不幸的是,我无法理解FileNotFoundException的含义。以下是重现问题的示例代码:
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.URLName;
import javax.mail.internet.MimeMessage;
import net.ukrpost.storage.maildir.MaildirFolder;
import net.ukrpost.storage.maildir.MaildirStore;
public class MaildirStoreTest {
public static void main(String[] args) throws MessagingException {
String mdirpath = "/tmp/TestMaildir";
Properties p = new Properties();
p.put("mail.store.maildir.autocreate", "true");
Session s = Session.getDefaultInstance(p);
s.setDebug(true);
MaildirStore st = (MaildirStore)s.getStore(new URLName("maildir:"+mdirpath));
MaildirFolder fd = (MaildirFolder) st.getDefaultFolder();
fd.open(Folder.READ_WRITE);
MimeMessage m = new MimeMessage(s);
m.setText("Hello World!");
fd.appendMessages(new Message[]{m});
st.close();
}
}
最后一个代码行抛出FileNotFoundException
。这是错误日志:
DEBUG: setDebug: JavaMail version 1.5.1
DEBUG: getProvider() returning javax.mail.Provider[STORE,maildir,net.ukrpost.storage.maildir.MaildirStore,Priocom Corp.]
unrecoverable io error: java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
javax.mail.MessagingException: unrecoverable io error;
nested exception is:
java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
at net.ukrpost.storage.maildir.MaildirFolder.appendMessages(MaildirFolder.java:469)
at MaildirStoreTest.main(MaildirStoreTest.java:34)
Caused by: java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at net.ukrpost.storage.maildir.MaildirFolder.getTmpFileOutputStream(MaildirFolder.java:401)
at net.ukrpost.storage.maildir.MaildirFolder.appendMessages(MaildirFolder.java:458)
... 1 more
Exception in thread "main" javax.mail.MessagingException: cant append message;
nested exception is:
javax.mail.MessagingException: unrecoverable io error;
nested exception is:
java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
at net.ukrpost.storage.maildir.MaildirFolder.appendMessages(MaildirFolder.java:527)
at MaildirStoreTest.main(MaildirStoreTest.java:34)
Caused by: javax.mail.MessagingException: unrecoverable io error;
nested exception is:
java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
at net.ukrpost.storage.maildir.MaildirFolder.appendMessages(MaildirFolder.java:469)
... 1 more
Caused by: java.io.FileNotFoundException: /tmp/TestMaildir/./tmp/1388665301.33536.francesco-laptop (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at net.ukrpost.storage.maildir.MaildirFolder.getTmpFileOutputStream(MaildirFolder.java:401)
at net.ukrpost.storage.maildir.MaildirFolder.appendMessages(MaildirFolder.java:458)
... 1 more
提供程序似乎正确加载,但我真的不明白它为什么要查找该文件...不应该创建该文件而不是??
/tmp/TestMaildir
文件夹存在且可由我的用户写入。我在Linux机器上。
答案 0 :(得分:1)
我对JavaMaildir一无所知,这可能与你得到的错误无关,但通常Store.getDefaultFolder不会返回一个可以存储消息的文件夹。它会返回一个你的文件夹可以认为是文件夹命名层次结构中的“根”文件夹。您需要在该文件夹下创建一个用于存储邮件的文件夹。
“默认”文件夹不,例如,您的“收件箱”,默认情况下会传递邮件。