IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Problème Acces Violation dans une DLL d'envoi de mail


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Problème Acces Violation dans une DLL d'envoi de mail
    Bonjour,

    J'ai une DLL qui me permet d'envoyer des mails.
    Lorsque j'envoie plusieurs mails de suite j'ai un message "Acces Violation"
    Je pense qu'il s'agit d'un pb de mémoire cependant je ne sais pas comment faire pour eviter ce problème

    Voici le code de la procédure contenu dans ma DLL

    Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    // -------------------------------------------------------
    // Envoi d'un mail
    // -------------------------------------------------------
    procedure EnvoiMail(destinataire:Pchar; envoyeur:Pchar; sujet:Pchar; Mess:Pchar; CheminPiece:Pchar; Confirmation:Pchar);stdcall
      Var
      IdSMTP1: TIdsmtp;
      IdMessage1: TIdMessage;
      i: byte;
      listedoc: string;
      chemin: String;
      longueur: integer;
      AdresseATester : string;
      AdresseOK : string;
      ListeDestinataireATester : string;
      ListeDestinataireOK : string;
     
      begin
      IdMessage1:= TIdmessage.Create(nil);
      IdSMTP1:= TIdSMTP.Create(nil);
     
      With Idmessage1 do
        Begin
        Charset:='iso-8859-1';
        Encoding:=meMIME;
        ContentType:='text/plain';
        // si contenu html
        Body.Text:=Mess;
        From.Text:=envoyeur;
        Recipients.EMailAddresses:=destinataire;
        Subject:=sujet;
        // on teste d'abord si la variable
        // cheminpiece est renseignée
        // sinon on teste si le fichier
        // c:\Fichiersjoints existe
        // afin d'attacher les pièces jointes
        i:=Pos(';',cheminpiece);
        //if cheminpiece <> ' ' then
        if i > 0 then
        begin
          listedoc:=cheminpiece;
          i:=Pos(';',listedoc);
          while (i>0) or (listedoc<>'') do
          begin
            chemin:=copy(listedoc,1,i-1);
            TIdAttachment.create(Idmessage1.MessageParts,chemin);
            Showmessage(Chemin + ' attaché');
            longueur:=length(listedoc)-i;
            listedoc:=copy(listedoc,i+1,longueur);
            i:=Pos(';',listedoc);
          end;
        end;
      end;
      IdSMTP1.Host:='host';
      // Connexion au serveur de messagerie
      IdSMTP1.Connect();
      // ********************************************
     
      // ********************************************
      Try
        Try
          IdSMTP1.Send(IdMessage1);
        except
          on e: exception do
          begin
          Idmessage1.Body.Text:='Message pour : ' + destinataire + Chr(13) + 'Sujet :' + sujet + Chr(13) + 'Message : ' + Mess + Chr(13) + 'pas envoyé';
          Idmessage1.From.Text:='expediteur';
          Idmessage1.Recipients.EMailAddresses:='destinataire';
          Idmessage1.Subject:='Pb envoi de mail';
          IdSMTP1.Send(IdMessage1);
          end;
        end;
      finally
        IdSMTP1.Disconnect;
        // on se deconnecte
      End;
      IdMessage1.Free;
      IdSMTP1.Free;
     
      if Confirmation = 'O' then  Showmessage('Message envoyé');
     
     
    End;

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Apparement il s'agissait de la directive d'appel.
    La DLL était appelé par un programme C j'ai donc remplacé stdcall par cdecl et ca a l'air de fonctionner.
    Merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2010, 13h43
  2. Problème de ProgressBar dans une dll
    Par terminator59140 dans le forum C#
    Réponses: 6
    Dernier message: 02/06/2008, 19h26
  3. .NetTiers | Problème de DAL dans une dll
    Par stephane.julien dans le forum C#
    Réponses: 4
    Dernier message: 25/03/2008, 14h01
  4. [YES::ENGINE]Problème d'exportation dans une dll
    Par trecks dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 30/11/2007, 08h26
  5. Problème Access Violation dans une classe
    Par randriano dans le forum C++Builder
    Réponses: 1
    Dernier message: 11/04/2007, 18h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo