在我的应用程序中,我想向用户的电子邮件发送一个html模板。当我以编程方式创建html时,Everithing正常工作,但我现在要做的是从我的应用程序中的文件中读取html文本并发送它。我得到一个FileNotFoundException,我不知道如何找到.txt文件。见代码:
public void sendAccountActivationLinkToBuyer(String destinationEmail,
String name) {
// Destination of the email
String to = destinationEmail;
String from = "myEmail@gmail.com";
try {
Message message = new MimeMessage(mailSession);
// From: is our service
message.setFrom(new InternetAddress(from));
// To: destination given
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setSubject("Registration succeded");
// Instead of simple text, a .html template should be added here!
message.setText(generateActivationLinkTemplate());
Date timeStamp = new Date();
message.setSentDate(timeStamp);
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
private String generateActivationLinkTemplate() {
String htmlText = "";
try {
File f = new File("");
BufferedReader br = new BufferedReader(new InputStreamReader(f.getClass().getResourceAsStream("./web/emailActivationTemplate.txt")));
String content = "";
String line = null;
while ((line = br.readLine()) != null) {
content += line;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return htmlText;
}
第二种方法给我带来问题,我找不到.txt文件。我该怎么办? 我在WebContent文件夹中创建了文件夹web,web文件夹现在位于META-INF和WEB-INF旁边(我认为这是一个合适的地方来保存我的图像,模板,CSS ......)在文件夹里面我手动粘贴emailActivationTemplate.txt现在我需要从中读取。有什么想法吗?
这是控制台输出:
SEVERE:java.io.FileNotFoundException:。\ web \ emailActivationTemplate.txt(系统找不到指定的路径)
答案 0 :(得分:3)
将电子邮件激活Template.text放入WEB-INF / classes中,并使用
获取BufferedReader br = new BufferedReader(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResource("emailActivationTemplate.txt"));
答案 1 :(得分:3)
(String) System.getProperties().get("com.sun.aas.instanceRoot")
答案 2 :(得分:1)
您的emailActivationTemplate.txt
应该出现在classes
的{{1}}文件夹中。如果你设法将它放在那里,你应该能够使用:
WEB-INF
如果不起作用,请尝试不使用前导'/'。