【发布时间】:2017-01-11 15:13:31
【问题描述】:
我有一个简单的 java ee 项目,我需要向用户发送电子邮件,我发现使用 javamail 和 gmail 免费 smtp 是可能的。
我的邮件发件人实现:
package duck.reg.pack;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
@WebServlet("/sendmailtls")
public class SendMailTLS extends HttpServlet {
public static void main(){
final String username = "john.fob@gmail.com";
final String password = "Password";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("joh.fob@gmail.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("jon.fob@yahoo.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler,"
+ "\n\n No spam to my email, please!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
现在的问题是,当我编译我的程序时,我得到 apache 错误提示:
'Starting tomcat v9.0 Server at localhost'遇到了问题。 Server Tomcat v9.0 Server at localhost 启动失败。
我发现如果我删除了
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
它编译得很好。
【问题讨论】:
-
无法编译您的 Web 应用程序和无法启动 Tomcat 服务器是两个不同的问题。你是如何编译你的程序的,你是如何启动 Tomcat 的?您是否使用一键“编译和部署”的 IDE?您是如何将 JavaMail 添加到您的项目中的?你把jar文件放在什么地方了吗?是否添加了 Maven 依赖项?
-
这实际上与编译无关,我的意思是,当我的代码中有
session session...时,我什至无法自行重启我的 apache 服务器,而我的项目中有 javamail名为 lib 的文件夹中的目录 -
很明显你做错了什么,但你没有向我们提供足够的细节来告诉我们你正在做什么,以便我们帮助你。你如何编译你的应用程序?编译成功了吗?你如何打包你的应用程序(例如,在一个war文件中)?如何将应用程序部署到 Tomcat 服务器?如何停止并重新启动 Tomcat 服务器?您的 Tomcat 服务器是否在您用于编译应用程序的同一台机器上运行?你把 JavaMail jar 文件放在哪里了?
标签: java apache tomcat jakarta-mail