Code service

Résolu
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - Modifié par KX le 14/08/2016 à 13:02
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021 - 16 août 2016 à 15:56
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

2 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
Modifié par Cirec le 14/08/2016 à 19:44
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
0
PhilLu Messages postés 251 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 11 mai 2021
16 août 2016 à 15:56
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
0
Rejoignez-nous