tratando de enviar un correo electrónico usando el correo de Java pero no está funcionando

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

  •  21-12-2019
  •  | 
  •  

Pregunta

Tengo una página de JSF en mi solicitud donde el usuario debe enviar un correo electrónico al administrador para restablecer su contraseña e iniciar sesión.Escribí el código y agregué los frascos a la buildpath, pero cuando hago clic en el botón Enviar, la página se actualiza y el correo electrónico no se envía al destino y no se muestra ninguna excepción. No puedo averiguar qué está mal. Código actualizado según Ramiq Responder Este es el código administrado

                  @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();
    }
}

y este es el código de la página

        <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>

¿Fue útil?

Solución

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

El nombre del parámetro FROMBRESS es " ROM ", pero lo usa " de ".

En general, hacerlo de esta manera debería funcionar:

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();
}

Actualizar: ¡Su método de acción dosendmail no será despedido! Tiene un parámetro ActionEvent, esto solo es necesario si este método es para ActionListener no para la acción, retire este parámetro

public void doSendMail(ActionEvent e)

a

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

}

Un método de acción debe devolver un resultado de navegación, si desea navegar a la misma página, luego devuelva NULL.

No sé qué versión de JSF use, pero generalmente declare que sus administradores, así deberán funcionar:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top