2009-09-24 130 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()); 

你的程序應該工作,然後將下面的行。