• Este debate tiene 9 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 5 años, 1 mes por Laura Nicolàs.
Viendo 10 entradas - de la 1 a la 10 (de un total de 10)

Mailtrap



  • Imak
    Participante
    Imak

    Hola Cristina/Laura

    No consigo ver en la bandeja de entrada de mailtrap ningún mail de los enviados desde el desarrollo realizado en el video 6 – enviar correos a un smtp de pruebas.

    He seguido paso a paso el desarrollo del ejemplo, he reproducido el error inicial al ejecutar la función de test correspondiente al envío del mail. Tras registrarme en mailtrap y pasar la configuración sugerida a navision he vuelto a realizar el test correspondiente, esta vez sin errores. El problema es que no veo ningún correo en la bandeja de entrada de mailtrap.

    El proceso es tan sencillo que no puedo ver qué me he dejado en el camino para que no reciba nada en la bandeja de entrada de mailtrap.

    ¿Alguna idea?

     

    Gracias y un saludo

    #8311

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    hola Imak,

    Puedes postear el código para que le eche un vistazo?

    Salut!
    Laura Nicolàs

    #8313

    Imak
    Participante
    Imak

    Hola Laura,

    Por abreviar sólo te voy a poner las funciones que intervienen en el envío del email ya que todas las funciones del test, incluida la del mail, funcionan bien. He vuelto a realizar una prueba antes de escribir este post revisando la configuración smtp en navision indicada por mailtrap.

    codeunit 50151 “ImIns Test Management”
    {
    Subtype = Test;

    [Test]
    procedure InsuranceEmail();
    var
    Insurance: Record Insurance;
    InsuranceEmailMgt: Codeunit “ImIns InsuranceEmailMgt” ;
    begin
    // [Scenario]

    // [Given] Setup:
    Insurance.FindFirst();
    Insurance.”ImIns Alert” := true;
    Insurance.Modify();
    // [When] Sending an email
    InsuranceEmailMgt.Run();
    // [Then] Verify:
    //ExpectedValue := ‘Expected_Value’;
    //ActualValue := ‘Actual_Value’;
    //IfErrorTxt := ‘This_Text_Will_Be_Shown_If_The_Test_Fails’;
    //AssertThat.AreEqual(ExpectedValue, ActualValue, IfErrorTxt);
    end;
    var
    AssertThat: Codeunit Assert;
    ExpectedValue: Variant;
    ActualValue: Variant;
    IfErrorTxt : Text;
    }
    codeunit 50150 “ImIns InsuranceEmailMgt”
    {
    trigger OnRun();
    begin
    CheckAndSendInsuranceEmailsAndNotifications();
    end;

    local procedure CheckAndSendInsuranceEmailsAndNotifications()
    var
    Insurance : Record Insurance;
    begin
    Insurance.SetRange(“ImIns Alert”,true);
    if Insurance.FindSet() then
    repeat
    // Comprobar si hay que mandar email
    //CheckEmailNotificationRequired();
    // Mandarlo a tantos usuarios como sea preciso
    SendInsuranceEmailNotification(Insurance);
    until Insurance.Next() = 0;
    end;
    local procedure SendInsuranceEmailNotification(Insurance: Record Insurance);
    var
    SMTPMail: Codeunit “SMTP Mail”;
    SenderName : text;
    SenderAddress : text;
    Subject : text;
    Body: Text;
    Recipients: text;
    HTMLFormatted : Boolean;
    begin
    SenderName := ‘yo’;
    SenderAddress := ‘yo@miempresa.com’;
    Recipients := ‘tu@tuempresa.com’;
    Subject := ‘Alerta vencimiento seguro’;
    Body := ‘Cuerpo’;
    HTMLFormatted := true;
    SMTPMail.CreateMessage(
    SenderName,
    SenderAddress,
    Recipients,
    Subject,
    Body,
    HTMLFormatted
    )
    end;
    }

    Un saludo

    #8314

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Imak,

    El prodecimiento SmtpMail.CreateMessage() crea el mensaje, pero no lo envía.
    Después tienes que llamar a SmtpMail.Send().

    Salut!
    Laura Nicolàs

    #8316

    Imak
    Participante
    Imak

    Gracias Laura por tu rápida respuesta,

    fallo mío al copiar/pegar el código.
    Tengo la llamada al método SmtpMail.Send() tras la creación del mensaje.
    Por probar algo nuevo antes de volver a escribirte, he cambiado los puertos en la configuración smtp de nav probando con las tres opciones que me ofrece mailtrap (25 o 2525 o 465), pero sigo sin recibir nada en la bandeja de entrada de mailtrap cada vez que ejecuto el test.

    Un saludo

    #8323

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Hola,

    Lo acabo de probar y sí he recibido el correo en mi bandeja de mailtrap.

    Has probado a debugar?
    Es posible que no se ejecute nunca la función SendInsuranceEmailNotification porque no encuentre seguros, o no hay seguros que cumplan con los filtros?
    La mejor forma de encontrar el problema es con el debugger en marcha, e ir viendo por donde pasa el código y qué valor tienen las variables.

    Salut!
    Laura Nicolàs

    #8330

    Imak
    Participante
    Imak

    Lo acabo de hacer, pero no veo nada anormal.

    Hasta el momento el único filtro a superar es que encuentre un seguro con la alerta activa. Esto lo supera ya que pasa por las funciones de creación del correo y de envío del mismo una única vez.

    He puesto en inspección los parámetros que utiliza en último término la función Mail.send, y se corresponden con los valores indicados por mailtrap y establecidos en la configuración smtp de NAV.
    Además la función retorna ”, que se supone que es lo que debe hacer cuando todo va bien…pero nada de ver el correo en la bandeja de entrada de mailtrap.

    Saludos

    #8333

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Si se ejecuta el Send sin errores… es posible que en el servidor donde estás trabajando haya un firewall o alguna cosa que no deje salir el mensaje?

    Salut!
    Laura Nicolàs

    #8341

    Imak
    Participante
    Imak

    Hola Laura,

    tenías razón, al desactivar la protección del antivirus, todo ha funcionado perfectamente.
    Tendré que incluir alguna directiva para que permita que funcione, pero eso es otra guerra.

    Gracias y un saludo

    #8345

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Que bien! Me alegro que al final lo haya sacado.

    Salut!
    Laura Nicolàs

    #8346
Viendo 10 entradas - de la 1 a la 10 (de un total de 10)

Debe iniciar sesión para responder a este tema.