2009-09-24 79 views
-1

我在尝试配置servlet向Gmail发送消息,但我正在等待回复消息在我的浏览器窗口中。配置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("[email protected]")); 
     msg.setSubject("Hello"); 
     msg.setText("What's up?"); 
     Transport.send(msg); 
     response.getWriter().println("Message sent"); 
    } 

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

} 
} 

什么我已经做进行连接?

回答

4

嗯,你还没有设置任何认证,据我所知。您已从请求中获取用户名和密码(我确实希望这是通过HTTPS),但您没有在任何地方使用它。

强烈建议您尝试得到一个控制台应用程序这方面的工作,这将是容易比一个servlet进行调试,然后它变成一个servlet环境。

+0

把它放到控制台应用程序中的好主意,不是我的投票与你做社区wiki的决定相关。 – RichardOD 2009-09-24 19:14:33

+0

这次我使用认证,但我仍然在等待回复消息。我现在要做什么? – Dusk 2009-09-24 19:47:30

+0

@RichardOD:当天晚些时候投票无论如何都不会有任何区别。 @JavaLearner:正如我之前建议的那样,不要在一个servlet中尝试开始。看看在命令行应用程序中发生了什么。 – 2009-09-24 20:16:24

0

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

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

你要为YOUREMAIL和URLENCODEDPASSWORD替换相应的值。您可以用简单的方式编码您的密码

URLEncoder.encode("password"); 
+0

哦,对不起,我最近一直在用Google Voice做这些事情,并对你的问题感到兴奋。这是HTTP的东西。你可以使用这个。如果没有,有一天它会对某人有用;) – dharga 2009-09-24 20:10:09

0

请找到您需要的解决方案。 1.除了使用Transport.send()的使用的代码

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

你的程序应该工作,然后将下面的行。