【发布时间】:2021-06-28 22:15:00
【问题描述】:
我正在尝试让网络应用程序中的新注册用户收到一封电子邮件以进行确认,但是经过长时间的搜索和调试其他问题后,我被困在这个问题上并且没有找到解决方案。 这是java服务器页面的代码和我得到的堆栈跟踪错误。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%
// code of sending email
String result;
// Recipient's email ID needs to be mentioned.
String to = "email recipient";
// Sender's email ID needs to be mentioned
String from = "myemail”
// Assuming you are sending email from localhost
String host = "smtp.gmail.com";
// Get system properties object
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session mailSession = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(mailSession);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: header field
message.setSubject("This is the Subject Line!");
// Now set the actual message
message.setText("This is actual message");
// Send message
Transport.send(message);
result = "Sent message successfully....";
} catch (MessagingException e) {
throw new RuntimeException(e);
}
// ends here code to send email
%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align = "center">
<%
out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>
我得到的错误:
org.apache.jasper.JasperException: An exception occurred processing [/email.jsp] at line [42]
39: Transport.send(message);
40: result = "Sent message successfully....";
41: } catch (MessagingException e) {
42: throw new RuntimeException(e);
43: }
44: // ends here code to send email
45: %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.RuntimeException: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. z8sm11494198wrh.37 - gsmtp
org.apache.jsp.email_jsp._jspService(email_jsp.java:168)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. z8sm11494198wrh.37 - gsmtp
com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
javax.mail.Transport.send0(Transport.java:195)
javax.mail.Transport.send(Transport.java:124)
org.apache.jsp.email_jsp._jspService(email_jsp.java:165)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
我的网络部署程序集:
【问题讨论】:
-
我没有靠近电脑给你一个更好的例子,但为了通过 gmail 发送电子邮件,你需要使用 smtps(安全)端口并告诉你的客户也使用安全套接字工厂.您可以在网上查找示例。 TLS 消息可能是您的邮件 API 不这样做的副产品,而 gmail 坚持认为您应该这样做。您还必须以特定用户的身份执行此操作,该用户在 gmail 中的安全性已设置为允许将其用于 smtp 身份验证。
-
我该如何改变?
-
您可以发布答案而不是在编辑评论中回答,
-
@JoãoMoreira 请不要在您的问题中添加
[Fixed]。它已修复的事实并不能帮助其他任何人到达这里。如果您以一种可以使其他有同样问题的人受益的方式解决了您的问题,最好发布详细的答案 -
@Tomerikoo 我已经回复了对我有用的答案,我希望这对那里的人有所帮助。