Autor Beitrag
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.04.06 20:09 
Hallo!

Ich verwende folgende Komponente zum E-mail versand.

ausblenden volle Höhe Delphi-Quelltext
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:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
{ Copyright (C) 1998-2004, written by Mike Shkolnik, Scalabium Software
  E-Mail:  mshkolnik@scalabium.com
  WEB: http://www.scalabium.com
  tel: 380-/44/-552-10-29
}

unit SendMail;

interface
uses
  Classes,dialogs;

type
  TMAPIMail = class(TComponent)
  private
    { Private declarations }
    FLastError: Integer;

    FSubject: string;
    FBody: string;

    FSenderName: string;
    FSenderAddress: string;

    FRecipients: TStrings;
    FAttachments: TStrings;
    FAttachmentNames: TStrings;

    FEditDialog: Boolean;
    FResolveNames: Boolean;
    FRequestReceipt: Boolean;

    procedure SetRecipients(Value: TStrings);
    procedure SetAttachments(Value: TStrings);
    procedure SetAttachmentNames(Value: TStrings);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    function Send: Boolean;

    property LastError: Integer read FLastError;
  published
    { Published declarations }
    property Subject: string read FSubject write FSubject;
    property Body: string read FBody write FBody;

    property Recipients: TStrings read FRecipients write SetRecipients;
    property Attachments: TStrings read FAttachments write SetAttachments;
    property AttachmentNames: TStrings read FAttachmentNames write SetAttachmentNames;

    property EditDialog: Boolean read FEditDialog write FEditDialog;
    property ResolveNames: Boolean read FResolveNames write FResolveNames;
    property RequestReceipt: Boolean read FRequestReceipt write FRequestReceipt;
    
    property SenderName: string read FSenderName write FSenderName;
    property SenderAddress: string read FSenderAddress write FSenderAddress;
  end;

function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: string; Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, ResolveNames, NeedReceipt: Boolean; intMAPISession: Integer): Integer;
function MAPIErrorDescription(intErrorCode: Integer): string;

procedure Register;

implementation
uses Windows, SysUtils, MAPI, Registry, Forms;

procedure Register;
begin
  RegisterComponents('SMComponents', [TMAPIMail]);
end;

function MAPIErrorDescription(intErrorCode: Integer): string;
begin
   case intErrorCode of
     MAPI_E_USER_ABORT: Result := 'User cancelled request';
     MAPI_E_FAILURE: Result := 'General MAPI failure';
     MAPI_E_LOGON_FAILURE: Result := 'Logon failure';
     MAPI_E_DISK_FULL: Result := 'Disk full';
     MAPI_E_INSUFFICIENT_MEMORY: Result := 'Insufficient memory'
     MAPI_E_ACCESS_DENIED: Result := 'Access denied'
     MAPI_E_TOO_MANY_SESSIONS: Result := 'Too many sessions'
     MAPI_E_TOO_MANY_FILES: Result := 'Too many files open'
     MAPI_E_TOO_MANY_RECIPIENTS: Result := 'Too many recipients'
     MAPI_E_ATTACHMENT_NOT_FOUND: Result := 'Attachment not found'
     MAPI_E_ATTACHMENT_OPEN_FAILURE: Result := 'Failed to open attachment'
     MAPI_E_ATTACHMENT_WRITE_FAILURE: Result := 'Failed to write attachment';
     MAPI_E_UNKNOWN_RECIPIENT: Result := 'Unknown recipient'
     MAPI_E_BAD_RECIPTYPE: Result := 'Invalid recipient type'
     MAPI_E_NO_MESSAGES: Result := 'No messages'
     MAPI_E_INVALID_MESSAGE: Result := 'Invalid message'
     MAPI_E_TEXT_TOO_LARGE: Result := 'Text too large.';
     MAPI_E_INVALID_SESSION: Result := 'Invalid session'
     MAPI_E_TYPE_NOT_SUPPORTED: Result := 'Type not supported'
     MAPI_E_AMBIGUOUS_RECIPIENT: Result := 'Ambiguous recipient'
     MAPI_E_MESSAGE_IN_USE: Result := 'Message in use'
     MAPI_E_NETWORK_FAILURE: Result := 'Network failure'
     MAPI_E_INVALID_EDITFIELDS: Result := 'Invalid edit fields'
     MAPI_E_INVALID_RECIPS: Result := 'Invalid recipients'
     MAPI_E_NOT_SUPPORTED: Result := 'Not supported'
   else
     Result := 'Unknown Error Code: ' + IntToStr(intErrorCode);
   end
end

function GetDefaultLogon(var strDefaultLogon: string): Boolean;
const
  KEYNAME1 = 'Software\Microsoft\Windows Messaging Subsystem\Profiles';
  KEYNAME2 = 'Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles';
  VALUESTR = 'DefaultProfile';
begin
  Result := False;
  strDefaultLogon := '';
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey(KEYNAME1, False) then
      begin
        try
          strDefaultLogon := ReadString(VALUESTR);
          Result := True;
        except
        end;
        CloseKey;
      end
      else
      if OpenKey(KEYNAME2, False) then
      begin
        try
          strDefaultLogon := ReadString(VALUESTR);
          Result := True;
        except
        end;
        CloseKey;
      end
      else
    finally
      Free;
    end;
end;

function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: string; Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, ResolveNames, NeedReceipt: Boolean; intMAPISession: Integer): Integer;
const
  RECIP_MAX  = MaxInt div SizeOf(TMapiRecipDesc);
  ATTACH_MAX = MaxInt div SizeOf(TMapiFileDesc);
type
  TRecipAccessArray = array [0..(RECIP_MAX - 1)] of TMapiRecipDesc;
  TlpRecipArray     = ^TRecipAccessArray;

  TAttachAccessArray = array [0..(ATTACH_MAX - 1)] of TMapiFileDesc;
  TlpAttachArray     = ^TAttachAccessArray;

  TszRecipName   = array[0..256of Char;
  TlpszRecipName = ^TszRecipName;

  TszPathName   = array[0..256of Char;
  TlpszPathname = ^TszPathname;

  TszFileName   = array[0..256of Char;
  TlpszFileName = ^TszFileName;

var
  i: Integer;

  Message: TMapiMessage;
  lpRecipArray: TlpRecipArray;
  lpAttachArray: TlpAttachArray;


  function CheckRecipient(strRecipient: string): Integer;
  var
    lpRecip: PMapiRecipDesc;
  begin
    try
      Result := MapiResolveName(00, PChar(strRecipient), 00, lpRecip);
      if (Result in [MAPI_E_AMBIGUOUS_RECIPIENT,
                     MAPI_E_UNKNOWN_RECIPIENT]) then
        Result := MapiResolveName(00, PChar(strRecipient), MAPI_DIALOG, 0, lpRecip);
      if Result = SUCCESS_SUCCESS then
      begin
        strRecipient := StrPas(lpRecip^.lpszName);
        with lpRecipArray^[i] do
        begin
          lpszName := StrCopy(new(TlpszRecipName)^, lpRecip^.lpszName);
          if lpRecip^.lpszAddress = nil then
            lpszAddress := StrCopy(new(TlpszRecipName)^, lpRecip^.lpszName)
          else
            lpszAddress := StrCopy(new(TlpszRecipName)^, lpRecip^.lpszAddress);
          ulEIDSize := lpRecip^.ulEIDSize;
          lpEntryID := lpRecip^.lpEntryID;
          MapiFreeBuffer(lpRecip);
        end
      end;
    finally
    end;
  end;

  function SendMess: Integer;
  const
    arrMAPIFlag: array[Boolean] of Word = (0, MAPI_DIALOG);
    arrReceipt: array[Boolean] of Word = (0, MAPI_RECEIPT_REQUESTED);
    arrLogon: array[Boolean] of Word = (0, MAPI_LOGON_UI or MAPI_NEW_SESSION);
  begin
    try
      Result := MAPISendMail(0, Application.Handle{0}Message,
                    arrReceipt[NeedReceipt] or
                    arrMAPIFlag[WithOpenMessage] or
                    MAPI_LOGON_UI {or MAPI_NEW_SESSION} or
                    arrLogon[{True}intMAPISession = 0],
                    0);
    finally
    end;
  end;

var
  lpSender: TMapiRecipDesc;
  strDefaultProfile, s: string;
begin
  FillChar(Message, SizeOf(Message), 0);
  with Message do
  begin
    strDefaultProfile := '';
    if GetDefaultLogon(strDefaultProfile) then
    begin
      try
        { try to logon with default profile }
        Result := MapiLogOn(0, PChar(strDefaultProfile), nil, MAPI_NEW_SESSION, 0, @intMAPISession);
      finally
        if (Result <> SUCCESS_SUCCESS) then
        begin
          intMAPISession := 0;

          raise Exception.CreateFmt('MAPI Error %d: %s', [Result, MAPIErrorDescription(Result)]);
        end;
      end
    end;


    if (SenderAddress <> ''then
    begin
      lpSender.ulRecipClass := MAPI_ORIG;
      if (SenderName <> ''then
        lpSender.lpszName := PChar(SenderAddress)
      else
        lpSender.lpszName := PChar(SenderName);
      lpSender.lpszAddress := PChar(SenderAddress);
      lpSender.ulReserved := 0;
      lpSender.ulEIDSize := 0;
      lpSender.lpEntryID := nil;
      lpOriginator := @lpSender;
    end;

    lpszSubject := PChar(Subject);
    lpszNoteText := PChar(Body);

    if Assigned(Attachments) and (Attachments.Count > 0then
    begin
      nFileCount := Attachments.Count;

      lpAttachArray := TlpAttachArray(StrAlloc(nFileCount*SizeOf(TMapiFileDesc)));
      FillChar(lpAttachArray^, StrBufSize(PChar(lpAttachArray)), 0);
      for i := 0 to nFileCount-1 do
      begin
        lpAttachArray^[i].nPosition := Cardinal(-1); //Cardinal($FFFFFFFF); //ULONG(-1);
        lpAttachArray^[i].lpszPathName := StrPCopy(new(TlpszPathname)^, Attachments[i]);
        if i < AttachmentNames.Count then
          lpAttachArray^[i].lpszFileName := StrPCopy(new(TlpszFileName)^, AttachmentNames[i])
        else
          lpAttachArray^[i].lpszFileName := StrPCopy(new(TlpszFileName)^, ExtractFileName(Attachments[i]));
      end;
      lpFiles := @lpAttachArray^
    end
    else
      nFileCount := 0;
  end;


  if Assigned(Recipients) and (Recipients.Count > 0then
  begin
    lpRecipArray := TlpRecipArray(StrAlloc(Recipients.Count*SizeOf(TMapiRecipDesc)));
    FillChar(lpRecipArray^, StrBufSize(PChar(lpRecipArray)), 0);
    for i := 0 to Recipients.Count-1 do
    begin
      s := Recipients[i];
      if (UpperCase(Copy(s, 13)) = 'CC:'then
      begin
        lpRecipArray^[i].ulRecipClass := MAPI_CC;
        Delete(s, 13);
      end
      else
      if (UpperCase(Copy(s, 14)) = 'BCC:'then
      begin
        lpRecipArray^[i].ulRecipClass := MAPI_BCC;
        Delete(s, 14);
      end
      else
        lpRecipArray^[i].ulRecipClass := MAPI_TO;

      if ResolveNames then
        CheckRecipient(s)
      else
      begin
        lpRecipArray^[i].lpszName := StrCopy(new(TlpszRecipName)^, PChar(s));
        lpRecipArray^[i].lpszAddress := StrCopy(new(TlpszRecipName)^, PChar(s));
      end;
    end;
    Message.nRecipCount := Recipients.Count;
    Message.lpRecips := @lpRecipArray^;
  end
  else
    Message.nRecipCount := 0;

  Result := SendMess;

  if Assigned(Attachments) and (Message.nFileCount > 0then
  begin
    for i := 0 to Message.nFileCount-1 do
    begin
      Dispose(lpAttachArray^[i].lpszPathname);
      Dispose(lpAttachArray^[i].lpszFileName);
    end;
    StrDispose(PChar(lpAttachArray));
  end;

  if Assigned(Recipients) and (Recipients.Count > 0then
  begin
    for i := 0 to Message.nRecipCount-1 do
    begin
      if Assigned(lpRecipArray^[i].lpszName) then
        Dispose(lpRecipArray^[i].lpszName);

      if Assigned(lpRecipArray^[i].lpszAddress) then
        Dispose(lpRecipArray^[i].lpszAddress);
    end;
    StrDispose(PChar(lpRecipArray));
  end;

  if intMAPISession <> 0 then
    try
      MapiLogOff(intMAPISession, 000);
    except
    end;
end;


{ TMAPIMail }
constructor TMAPIMail.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  EditDialog := True;
  FRecipients := TStringList.Create;
  FAttachments := TStringList.Create;
  FAttachmentNames := TStringList.Create;
end;

destructor TMAPIMail.Destroy;
begin
  FRecipients.Free;
  Attachments.Free;
  AttachmentNames.Free;

  inherited Destroy;
end;

procedure TMAPIMail.SetRecipients(Value: TStrings);
begin
  FRecipients.Assign(Value)
end;

procedure TMAPIMail.SetAttachments(Value: TStrings);
begin
  Attachments.Assign(Value)
end;

procedure TMAPIMail.SetAttachmentNames(Value: TStrings);
begin
  AttachmentNames.Assign(Value)
end;

function TMAPIMail.Send: Boolean;
begin
  FLastError := SendEMailByMAPI(SenderName, SenderAddress, Subject, Body, Recipients, Attachments, AttachmentNames, EditDialog, ResolveNames, RequestReceipt, 0);

  Result := (LastError = SUCCESS_SUCCESS);
end;

end.


Leider tritt beim versenden von E-Mail ein fehler auf:MAPI Error 1 user cancelled request

was heißt das???


Danke für die Hilfe
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Do 27.04.06 09:04 
Moin :-)
Übersetzt heißt das: 'Benutzer hat Vorgang abgebrochen'...
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.04.06 16:13 
user profile iconraiguen hat folgendes geschrieben:
Moin :-)
Übersetzt heißt das: 'Benutzer hat Vorgang abgebrochen'...


Ich habe aber nichts abgebrochen. Nach der komplimierung wurde sofort dieser Fehler angezeigt. :x
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Do 27.04.06 16:18 
Ich glaub kaum, dass dir das beim Kompilieren (so heißt es richtig) angezeigt wird, es sei denn du hast das Kompilierenvorzeitig abgebrochen :roll:
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.04.06 16:29 
user profile iconDanniolo hat folgendes geschrieben:
Ich glaub kaum, dass dir das beim Kompilieren (so heißt es richtig) angezeigt wird, es sei denn du hast das Kompilierenvorzeitig abgebrochen :roll:


nein. ganz normal. beim drucken auf den button erscheint dieser fehler. ich verwende d3.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Do 27.04.06 17:02 
Dann schau dir mal an was im OnCreate oder im OnShow des Hauptformulars steht und suche dort den Fehler.

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Do 27.04.06 17:40 
Moin :-)
user profile iconmuppet max hat folgendes geschrieben:
user profile iconraiguen hat folgendes geschrieben:
Moin :-)
Übersetzt heißt das: 'Benutzer hat Vorgang abgebrochen'...


Ich habe aber nichts abgebrochen. Nach der komplimierung wurde sofort dieser Fehler angezeigt. :x

Hab ja nicht gesagt, dass Du höchstdaselbstpersönlich was abgebrochen hast, sondern ich hab die Fehlermeldung übersetzt, da ich nach Deiner Fragestellung davon ausging, dass Du das nicht wusstest ;-)


user profile iconmuppet max hat folgendes geschrieben:
... beim drucken auf den button erscheint dieser fehler. ich verwende d3.

Auf welchen Button? Wird die Unit überhaupt angesprungen?
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.04.06 17:45 
ich habe einen Senden button auf mein formular gesetzt.

Moderiert von user profile iconraziel: Fullquote des letzten Beitrags entfernt.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Do 27.04.06 17:46 
Die Frage ist nun, wo der Fehler auftritt :roll:
Das muss ja irgendwo in OnCreate oder OnShow des Hauptformulars sein :roll:

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.04.06 17:48 
user profile iconMarco D. hat folgendes geschrieben:
Die Frage ist nun, wo der Fehler auftritt :roll:
Das muss ja irgendwo in OnCreate oder OnShow des Hauptformulars sein :roll:


nein, ich habe diese methoden nicht verwendet
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Do 27.04.06 17:53 
user profile iconmuppet max hat folgendes geschrieben:
user profile iconMarco D. hat folgendes geschrieben:
Die Frage ist nun, wo der Fehler auftritt :roll:
Das muss ja irgendwo in OnCreate oder OnShow des Hauptformulars sein :roll:


nein, ich habe diese methoden nicht verwendet

:roll: Das sind Ereignisse :roll:
Dann poste mal irgendeinen Quellcode von deinem Programm. Bis jetzt ist alles stures Rumgerate :mahn:

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Do 27.04.06 18:20 
user profile iconMarco D. hat folgendes geschrieben:

Dann poste mal irgendeinen Quellcode von deinem Programm. Bis jetzt ist alles stures Rumgerate :mahn:

Genau, alles andere wäre Glaskugelbefragen. Speziell die 'Sendebutton'-Procedure, evtl liegt hier ein Fehler? Nach grober Durchsicht der geposteten Unit Sendmail scheint mir ein Fehler beim Erstellen einer neuen MAPI_Session wahrscheinlich :gruebel:
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 29.04.06 10:53 
Titel: hier der quellcode
hier der quellcode:

ausblenden volle Höhe Delphi-Quelltext
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:
unit Unit17;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, SendMail,
  StdCtrls, Buttons;

type
  TOKRightDlg3 = class(TForm)
    Em: TMAPIMail;
    Memo1: TMemo;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Button1: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  OKRightDlg3: TOKRightDlg3;

implementation

{$R *.DFM}


procedure TOKRightDlg3.BitBtn1Click(Sender: TObject);
begin
em.Subject:=Edit2.Text;
em.SenderAddress:=Edit1.Text;
em.Send;
end;

procedure TOKRightDlg3.Button1Click(Sender: TObject);
begin
close;
end;

end.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Sa 29.04.06 11:58 
Welchen Namen trägt das Hauptformular?

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
muppet max
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 29.04.06 14:40 
user profile iconMarco D. hat folgendes geschrieben:
Welchen Namen trägt das Hauptformular?


Form1