使用java servlet发送电子邮件时显示错误?

使用java servlet发送电子邮件时显示错误?,java,email,servlets,jakarta-mail,Java,Email,Servlets,Jakarta Mail,使用servletin eclispe发送邮件时出现错误。我的类路径中还包括mail.jar和activation.jar 我的servlet代码看起来像 import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import ja

使用servletin eclispe发送邮件时出现错误。我的类路径中还包括mail.jar和activation.jar

我的servlet代码看起来像

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;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Controller extends HttpServlet 
{
    private static final long serialVersionUID = 1L;
    public Controller() {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        doProcess(request,response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        doProcess(request,response);
    }
    protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        final String user = request.getParameter("email");
        final String pwd = request.getParameter("pwd");
        String sub = request.getParameter("subject");
        String body = request.getParameter("msg");
        String to = "shiladitya1093@gmail.com";

        //Get the session object
        Properties props = new Properties();
        props.put("mail.smtp.host","localhost");
        props.put("mail.smtp.auth","true");
        Session session = Session.getDefaultInstance(props,  
                 new javax.mail.Authenticator() {  
                  protected PasswordAuthentication getPasswordAuthentication() {  
                   return new PasswordAuthentication(user,pwd);  
                   }  
                });

        //Compose message
        try{
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject(sub);
            message.setText(body);

        //Send message
            Transport.send(message);
        }catch(MessagingException e){
            throw new RuntimeException(e);
        }

        request.setAttribute("sendMsg","Message successfully send.");
        RequestDispatcher rd = request.getRequestDispatcher("contactus.jsp");
        rd.forward(request, response);
    }
}
错误如下所示:


HTTP状态500-javax.mail.AuthenticationFailedException:535未定义SMTP服务器。在您的帐户中使用真实的服务器地址,而不是127.0.0.1。

您可以检查以下内容吗。 1是在本地计算机上配置的SMTP服务器。 2尝试使用要将邮件发送到的计算机的计算机名或ip地址,而不是本地主机


另外,请务必提供一些详细信息,说明您的邮件预期目标是什么,即此邮件将在哪里发送。基于此,您可能会得到更好的响应。

在您的帐户中使用真实的服务器地址,而不是127.0.0.1。仔细阅读您的错误?邮件服务器需要正确配置。您的smtp主机为本地主机,它应该是smtp服务器ip。如果您没有smtp服务器,请使用google提供的默认smtp配置,您可以测试邮件api。我如何在eclispe中设置smtp服务器?我想将邮件从gmail发送到gmail,我也尝试使用smtp.gmail.com而不是localhost,但它显示了相同的问题。请尝试通过设置属性mail.smtp.port显式定义gmail smtp服务器的端口587和465。此外,您还可以通过在cmd提示符下使用telnet或在windows上使用putty if之类的telnet客户端来检查是否能够访问相关服务器。通过这种方式,您可以在开始之前确保您尝试访问的服务器可以从您的计算机访问。查看以下帖子可能会有帮助,因为问题被确定为是由于防病毒阻止smtp端口所致,在任何情况下,simpel telnet测试都会显示您是否能够访问。有关详细信息,请参阅此常见问题解答条目,和此常见问题解答条目。