2009-09-24 9 views
-1

J'essaie de configurer servlet pour envoyer un message à Gmail, mais j'attends un message de réponse dans la fenêtre de mon navigateur.Configuration de la servlet pour se connecter au serveur Gmail

Voici le code de 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); 
    } 

} 
} 

Que dois-je faire pour ai faire le lien?

Répondre

4

Eh bien, vous n'avez configuré aucune authentification pour autant que je sache. Vous avez saisi le nom d'utilisateur et le mot de passe de la demande (j'espère que c'est sur HTTPS) mais vous ne l'avez utilisé nulle part.

Je fortement vous recommandons d'essayer d'obtenir ce travail dans une application console qui sera beaucoup plus facile à déboguer qu'une servlet, puis le mettre dans un environnement de servlet.

+0

Bonne idée de le mettre dans une application de console, pas que mon vote compte avec votre décision de faire du wiki de la communauté. – RichardOD

+0

Cette fois, j'ai utilisé l'authentification, mais je reçois toujours le message "en attente de réponse". Qu'est-ce que j'ai à faire maintenant? – Dusk

+0

@RichardOD: Un vote si tard dans la journée n'aurait pas fait de différence pour rep de toute façon. @JavaLearner: Comme je l'ai suggéré précédemment, ne pas expérimenter dans une servlet pour commencer. Voyez ce qui se passe dans une application de ligne de commande. –

0

Oui, vous n'avez rien authentifié. L'URL que vous voudrez authentifier avec GMail est celle-ci.

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

Vous voulez remplacer les valeurs appropriées pour Youremail et URLENCODEDPASSWORD. Vous pouvez encoder votre mot de passe avec un simple

URLEncoder.encode("password"); 
+0

Oh, désolé, j'ai fait ces choses avec Google Voice ces derniers temps et j'ai été excité par votre question. C'est pour les trucs HTTP. Vous pourriez être en mesure d'utiliser cela. Sinon, ça sera utile pour quelqu'un un jour;) – dharga

0

Veuillez trouver la solution que vous devez faire. 1. Au lieu d'utiliser Transport.send() utiliser la ligne de code suivante

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

Votre programme devrait fonctionner alors.

Questions connexes