essayer d'envoyer un email en utilisant le mail Java, mais cela ne fonctionne pas

StackOverflow https://stackoverflow.com//questions/21029418

  •  21-12-2019
  •  | 
  •  

Question

J'ai une page JSF dans mon application où l'utilisateur doit envoyer un courrier électronique à l'administrateur afin de réinitialiser son mot de passe et son identifiant.J'ai écrit le code et ajouté les pots à la buildpath, mais lorsque je clique sur le bouton Envoyer, la page est actualisée et que l'e-mail n'est pas envoyé à la destination et qu'il n'y a pas d'exception affichée, je ne peux pas comprendre ce qui ne va pas Code mis à jour selon Ramiq Réponse Ceci est le code managré

                  @ManagedBean(name="sendMail")
                  @SessionScoped
               public class SendMail implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private String to = "toadress";
private String objet = "Compte  inaccessible";
private String body = "Mon compte "
        + getNom()
        + " "
        + getPrenom()
        + " n'est plus accessible.Veuillez s'il vous plaît réinitialiser mes cordonnées et les envoyer à mon email "
        + getFrom();
private String from = "fromadress";
private String smtpServer = "smtp.orange.tn";
private String nom;
private String prenom;

public void send() {

        Properties props =new Properties();
        props.put("mail.smtp.host", smtpServer);
        props.put("mail.debug", "true");
        Session session = Session.getInstance(props);
        try {
             Message msg = new MimeMessage(session);
                msg.setFrom(new InternetAddress(from));
                InternetAddress[] address = {new InternetAddress(to)};
                msg.setRecipients(Message.RecipientType.TO, address);
                msg.setSubject(objet);
                msg.setSentDate(new Date());
                msg.setText("Mail Body ....");
                Transport.send(msg);
        System.out.println("Message Sent Ok");
        FacesMessage msg2 = new FacesMessage("E-mail envoyé avec succés");
        FacesContext.getCurrentInstance().addMessage(null, msg2);
    } catch (MessagingException ex) {
        ex.printStackTrace();
    }
}

Et ceci est le code de page

        <h:form id="f1">
            <br></br>
            <div class="centre">
                <p:inputText placeholder="Nom" required="true" id="nom"
                    value="#{sendMail.nom}"
                    validator="#{AdministrateurBean.checkAdmin}"></p:inputText>
                <h:messages style="color:red" for="nom"/>
            </div>
            <div class="centre">
                <p:inputText placeholder="Prénom" required="true"
                    value="#{sendMail.prenom}" id="prenom" ></p:inputText>
                <h:messages style="color:red" for="prenom"/>
            </div>

            <div class="centre">
                <p:inputText placeholder="xyz@exemple.com" required="true" id="email"></p:inputText>
                <h:messages style="color:red" for="email"/>
            </div>
            <div class="centre">
                <p:button value="Envoyer" size="30" style="width:207px"
                    action="#{sendMail.send}" update="f1"></p:button>
            </div>

        </h:form>
    </div>

Était-ce utile?

La solution

... send (String smtpServer,String to,String rom, String objet,String body){

Le nom du paramètre FromAddress est " rom ", mais vous l'utilisez comme " de ".

En général, le faire de cette façon devrait fonctionner:

String to = "sendToMailAddress";
String from = "sendFromMailAddress";

String host = "smtp.yourisp....";


Properties props = new Properties();


props.put("mail.smtp.host", host);
props.put("mail.debug", "true");
Session session = Session.getInstance(props);

try {

    Message msg = new MimeMessage(session);


    msg.setFrom(new InternetAddress(from));
    InternetAddress[] address = {new InternetAddress(to)};
    msg.setRecipients(Message.RecipientType.TO, address);
    msg.setSubject("Test Subject");
    msg.setSentDate(new Date());


    msg.setText("Mail Body ....");


    Transport.send(msg);
}
catch (MessagingException mex) {
    mex.printStackTrace();
}

mise à jour: Votre méthode d'action Dosendmail ne sera pas tirée! Il a un paramètre Actionvent, ceci n'est nécessaire que si cette méthode est destinée à ActionListener non pour action, supprimez ce paramètre

public void doSendMail(ActionEvent e)

à

    public String doSendMail(){
    ....
    return null;

}

Une méthode d'action doit renvoyer un résultat de navigation, si vous souhaitez naviguer vers la même page, renvoyez Null.

Je ne sais pas quelle version JSF que vous utilisez, mais en général, déclarez-vous généralement que cela devrait fonctionner:

 @ManagedBean(name="sendMail")
 @SessionScoped
 public class SendMail implements java.io.Serializable{

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top