Code service [Résolu]

PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 14 août 2016 à 09:46 - Dernière réponse : PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

2 réponses

Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 11 mai 2018 Dernière intervention - Modifié par Cirec le 14/08/2016 à 19:44
0
Utile
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
PhilLu 249 Messages postés lundi 9 novembre 2009Date d'inscription 6 mai 2018 Dernière intervention - 16 août 2016 à 15:56
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.