Entwickler-Ecke
Internet / Netzwerk - Mail-Unit --> Mail-DLL haut nicht hin
LuMa86 - So 22.12.13 15:48
Titel: Mail-Unit --> Mail-DLL haut nicht hin
Moinsen,
habe ein kleines Problem mit meiner SimpleSMTPMail-Unit. Diese hat immer super funktioniert, aber da ich sie mitlerweile immer öfter nutze, möchte ich sie in eine DLL auslagern.
Die DLL sieht so aus:
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:
| library SimpleSMTPMail;
uses
function SendSimpleSMTPMail(AHost, AUsername, APassword, ASender, ASubject: String; APort: Integer; ARecipients, ABody: TStrings; UseSASL: Bool) : Integer; stdcall; var begin try
with MailMessage do begin From.Address := MailSender; for i := 0 to MailRecipients.Count - 1 do Recipients.Add.Address := MailRecipients.Strings[i]; Subject := MailSubject; Body := MailBody; end;
except raise Exception.Create('You shouldn''t see this!'); end; end;
exports SendSimpleSMTPMail;
end. |
Der Aufruf in meinem Test-Programm sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function SendSimpleSMTPMail(AHost, AUsername, APassword, ASender, ASubject: String; APort: Integer; ARecipients, ABody: TStrings; UseSASL: Bool) : Integer; stdcall; external 'SimpleSMTPMail.dll';
ShowMessage(IntToStr(SendSimpleSMTPMail('smtp.gmail.com', 'myname@googlemail.com', 'mypassword', 'myname@googlemail.com', 'Mail-Test', 587, MemoRecipients.Lines, MemoBody.Lines, True))); |
In meiner Unit hat das immer einwandfrei funktioniert, warum klappt es nun in der DLL nicht?
Ich bin machtlos, bitte helft mir auf die Sprünge :(
Lg,
LuMa
LuMa86 - Mo 23.12.13 13:57
Hmmm okay, das sieht ja schonmal ganz schlüssig aus, aber warum geht es denn mit den Empfängern, also "ARecipients", die Variable ist ja auch vom Typ "TStrings" ?
jaenicke - Mo 23.12.13 14:18
Da beide Teile mit der selben Version von Delphi kompiliert wurden, funktioniert es auch meistens. Man kann sich nur nicht darauf verlassen und manches geht einfach gar nicht.
Solange du nur Interfaces oder einfache Typen nimmst, gibt es kein Problem. Statt String kannst du z.B. PWideChar, PAnsiChar oder WideString nutzen. Die Empfänger und den Body würde ich einfach ebenfalls als solchen Text angeben.
LuMa86 - Mo 23.12.13 20:00
Gut, dann werde ich das wohl so lösen :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!