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;
Partager