-1

我正在尝试配置 servlet 以向 Gmail 发送消息,但我正在等待浏览器窗口中的回复消息。

这是servlet代码:

import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;


public class JavaMailServlet extends HttpServlet 
{

public void doGet(HttpServletRequest request,HttpServletResponse response)
{

    try{

        String userName=request.getParameter("p1");
        String password=request.getParameter("p2");;

        Properties props=new Properties();
        props.put("mail.smtp.host","smtp.gmail.com");
        props.put("mail.smtp.port",465);


        Session ses=Session.getInstance(props,null);
        Message msg=new MimeMessage(ses);
        msg.setFrom(new InternetAddress(request.getRequestURI()));
        msg.addRecipient(Message.RecipientType.TO,new InternetAddress("Boyofbackstreet@gmail.com"));
        msg.setSubject("Hello");
        msg.setText("What's up?");
        Transport.send(msg);
        response.getWriter().println("Message sent");
    }

    catch(Exception e)
    {
        System.out.println(e);
    }

}
}

我该怎么做才能建立连接?

4

3 回答 3

4

好吧,据我所知,您还没有设置任何身份验证。您已经从请求中获取了用户名和密码(我希望这是通过 HTTPS),但您还没有在任何地方使用它。

强烈建议您尝试在一个比 servlet 更容易调试的控制台应用程序中使其工作然后其放入 servlet 环境中。

于 2009-09-24T19:11:39.333 回答
0

是的,你还没有验证任何东西。您要使用 GMail 进行身份验证的 url 就是这个。

https://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=YOUREMAIL&Passwd=URLENCODEDPASSWORD

您需要为 YOUREMAIL 和 URLENCODEDPASSWORD 替换适当的值。您可以使用简单的密码对密码进行编码

URLEncoder.encode("password");
于 2009-09-24T20:00:05.387 回答
0

请找到您需要做的解决方案。1.而不是使用 Transport.send() 使用下面的代码行

Transport tp = session.getTransport("smtp");
  tp.connect("smtp.gmail.com", 465, userName, password);
  tp.sendMessage(msg, msg.getAllRecipients());

您的程序应该可以工作。

于 2011-09-14T19:09:42.477 回答