2010-06-03 11 views
2
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.mail.event.*; 
import java.net.*; 
import java.util.*; 
public class servletmail extends HttpServlet 
{ 
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 
{ 
PrintWriter out=response.getWriter(); 
response.setContentType("text/html"); 
try 
{ 
Properties props=new Properties(); 
props.put("mail.transport.protocol", "smtp"); 
props.put("mail.smtp.host","smtp.gmail.com"); 
props.put("mail.smtp.port", "25"); 
props.put("mail.smtp.auth", "true"); 
Authenticator authenticator = new Authenticator() 
    { 
    protected PasswordAuthentication getPasswordAuthentication() 
     { 
     return new PasswordAuthentication("user", "pass"); 
    } 
}; 
Session sess=Session.getDefaultInstance(props,authenticator); 
Message msg=new MimeMessage(sess); 
msg.setFrom(new InternetAddress("[email protected]")); 
msg.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); 
msg.setSubject("Hello JavaMail"); 
msg.setText("Welcome to JavaMail"); 
Transport.send(msg); 
out.println("mail has been sent"); 
} 
catch(Exception e) 
{ 
System.out.println("err"+e); 
} 
} 
}

im travailler avec im gettin ci-dessus d 'erreur suivantaide javamail api

servletmail.java:22: reference to Authenticator is ambiguous, both class java.ne 
t.Authenticator in java.net and class javax.mail.Authenticator in javax.mail mat 
ch 
Authenticator authenticator = new Authenticator() 
^ 
servletmail.java:22: reference to Authenticator is ambiguous, both class java.ne 
t.Authenticator in java.net and class javax.mail.Authenticator in javax.mail mat 
ch 
Authenticator authenticator = new Authenticator() 
           ^
2 errors 

i ont suivi l'exemple

http://java.sun.com/developer/onlineTraining/JavaMail/contents.html

comment dois-je obtenir le output..will le code ci-dessus ... travail quels sont les changements qui doivent être faites..im en utilisant thunderbird smtp serveur

Répondre

7

L'erreur indique qu'il y a deux classes possibles Authenticator référencées ici - à savoir java.net.Authenticator and javax.mail.Authenticator comme l'indique l'erreur. C'est parce que vous avez importé java.net. * Et javax.mail. * Et que le compilateur ne sait pas de quel Authenticator vous avez besoin.

Résoudre ce problème en important explicitement

import javax.mail.Authenticator; 

OU nuancer les Authenticator sur la ligne 22 comme

javax.mail.Authenticator authenticator = new javax.mail.Authenticator() 

MISE À JOUR

Puisque vous rencontrez des probl ems avec l'envoi du courrier, vérifiez d'abord si vos administrateurs réseau vous ont donné les autorisations nécessaires pour se connecter au serveur smtpserver de gmail. Êtes-vous derrière un proxy?

Après avoir créé sess, ajoutez cette ligne au code: sess.setDebug(true);

Regardez les messages et voir jusqu'où vous obtenez.

Essayez les autres conseils de débogage donnés à: http://java.sun.com/products/javamail/FAQ.html#debug

MISE À JOUR 2

J'ai essayé de l'exécution de votre code et il fonctionne pour moi, y compris l'envoi de l'e-mail. je devais ajouter une ligne pour les accessoires

props.put("mail.smtp.starttls.enable","true"); 

Et bien sûr, changer cette return new PasswordAuthentication("user", "pass"); à votre nom d'utilisateur/mot de passe réel. Et "[email protected]" à votre adresse e-mail réelle.

+0

i changé le code pour cela ... il fonctionne très bien sans erreurs ... mais le courrier envoyé isnt j'ai vérifié la boîte de réception, mais pas de courrier ... !! quel est le problème

javax.mail.Authenticator authenticator = new javax.mail.Authenticator() \t { protected javax.mail.PasswordAuthentication getPasswordAuthentication() \t \t { return new javax.mail.PasswordAuthentication("[email protected]", "pass"); } };
simplyblue

+0

@bobby - voir ma mise à jour – JoseK

+0

hhé je reçois toujours la même commande error.isssue starttls. – simplyblue