Code service [Résolu]

Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
-
Bonjour,
Je tente de transposer un code vers un service.
J'observe que je dois modifier certains algorithmes comme par exemple:
renamefile('ok.ini','nok.ini');
renamefile(PChar(ExtractFilePath(ParamStr(0)))+'ok.ini',PChar(ExtractFilePath(ParamStr(0)))+'nok.ini');

J'ai par contre encore un problème avec une tentative d'envoi d'email:
Ce code n'est pas accepté:
var
  //FileNames : string;
  Result : boolean;
begin
  try
    Result := False;
    //Setup SMTP smtphost, emailport, mailfrom, mailto, mailsubj, mailbody
    SMTP := TIdSMTP.Create(nil);
    SMTP.Host := smtphost;
    SMTP.Port := StrToInt(emailport); //Default email port
    MailMessage.From.Address := mailfrom;
    MailMessage.Recipients.EMailAddresses := mailto+','+mailcc;
    MailMessage.Subject := mailsubj;
    MailMessage.Body.Text := mailbody;

    //Send email
    try
      try
        SMTP.Connect;
        SMTP.Send(MailMessage);
        Result := True;
      except
        on E:Exception do
        begin
          ShowMessage('Cannot send E-Mail: ' + E.Message);
          Result := False;
        end;
      end;
    finally
      if SMTP.Connected then SMTP.Disconnect;
  end;
  except
    on E : Exception do
    begin
      ShowMessage('Error in the function SendEmailDelphi: ' + E.Message);
      Result := False;
    end;
  end;

J'ai tenté l'appel de cette procédure dans le service:
var
    SMTP: TIdSMTP;
    MailMessage: TIdMessage;
  //FileNames : string;
  Result : boolean;
begin
  try
    Result := False;
    //Setup SMTP smtphost, emailport, mailfrom, mailto, mailsubj, mailbody
    SMTP := TIdSMTP.Create(nil);
    SMTP.Host := smtphost;
    SMTP.Port := StrToInt(emailport); //Default email port
    MailMessage.From.Address := mailfrom;
    MailMessage.Recipients.EMailAddresses := mailto+','+mailcc;
    MailMessage.Subject := mailsubj;
    MailMessage.Body.Text := mailbody;

    //Send email
    try
      try
        SMTP.Connect;
        SMTP.Send(MailMessage);
        Result := True;
      except
        on E:Exception do
        begin
          ShowMessage('Cannot send E-Mail: ' + E.Message);
          Result := False;
        end;
      end;
    finally
      if SMTP.Connected then SMTP.Disconnect;
  end;
  except
    on E : Exception do
    begin
      ShowMessage('Error in the function SendEmailDelphi: ' + E.Message);
      Result := False;
    end;
  end;

mais sans résultat :-(
Je ne sais pas non plus comment déboguer un service, sauf en l'installant pour le tester... si vous avez des suggestions...
Merci d'avance ;-)
PhilLu
Afficher la suite 

Votre réponse

2 réponses

Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
32
0
Merci
Salut,

je vois déjà 2 soucis dans ton code:
1 le TidMessage n'est pas créé
2 le composant TidSMTP n'est pas libéré (il faudra aussi le faire pour TidMessage)

sinon ... voir ceci pour Déboguer un Service


en Français ... voir ceci pour Déboguer un Service
    
@+ Cirec
Commenter la réponse de Cirec
Messages postés
249
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
6 mai 2018
0
Merci
Salut Cirec,
Merci pour ton aide, de fait un oubli de ma part...
Ceci est maintenant opérationnel:
procedure emailSend(Sender: TObject);
begin
//Setup SMTP smtphost, emailport, mailfrom, mailto, mailsubj, mailbody
SMTP := TIdSMTP.Create(nil);
SMTP.Host := smtphost;
SMTP.Port := StrToInt(emailport);
MailMessage := TIdMessage.Create(nil);
MailMessage.From.Address := mailfrom;
MailMessage.Recipients.EMailAddresses := mailto+','+mailcc;
MailMessage.Subject := mailsubj;
MailMessage.Body.Text := mailbody;
//Send email
try
SMTP.Connect;
SMTP.Send(MailMessage);
except
// Log blabla
end;
if SMTP.Connected then
begin
SMTP.Disconnect;
MailMessage.free;
SMTP.free;
end;
end;

Merci pour ta clairvoyance :-)
N'hésite pas si tu vois encore une "coquille" ;-)
PhilLu
Commenter la réponse de PhilLu