Versturen van eMail vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken vanuit een Delphi toepassing. Eerst maken we de C# bibliotheek voor het versturen van een email. Start de Visual Studio C# omgeving. Het voorbeeld hier werd gemaakt met Visual C# 2008 Express Edition. Maak een nieuw project, en kies Empty Project Ik geef dit de naam Email
Sla dit project op een voor u bekende plaats op.
Klik in de Solution Explorer met de rechtermuisknop op de naam van het project, en kies Add – New Project Selecteer Class Library, en geef er een gepaste naam aan. Ik kies voor ade.Email
In de Solution Explorer zie je nu 2 projecten
de daarnet aangemaakt Class library, is de bibliotheek die we vanuit Delphi gaan gebruiken. Visual studio zelf had bij het aanmaken van het lege project ook reeds een applicatie aangemaakt met de naam Email. Dit is een console applicatie. Verwijder deze console applicatie.
Je ziet ook dat er een bestand Class1.cs werd aangemaakt in de bibliotheek. Verwijder dit bestand. Klik nu met de rechtermuisknop op de library naam (ade.Email), en kies Add – New Item – Interface. Geef hier de naam IMailer
Maak de interface public, en voeg de definitie van de procedure MailTo toe aan de interface specificatie
Een class die een interface implementeerd, wordt verplicht om alle functies in die interface te voorzien.
Klik opnieuw met de rechtermuisknop op de projectnaam: ade.Email en kies Add – Class Gebruik de naam Mailer Pas de class definitie aan
Je ziet hier onder de letter I een streepje (als je het niet meer ziet, klik dan even op het woord IMailer) Je ziet nu volgende opties. Kies Implement interface 'IMailer'
Visual studio zal nu de procedures die de interface oplegt, aanmaken. Klik met de rechtermuisknop op References en kies Add Reference Blader naar System.Web en klik op OK Plaats in de usings bovenaan deze lijn:
using System.Web.Mail;
Wijzig de code van de procedure MailTo als volgt:
Klik met de rechtermuisknop op de solution en kies Add – New Project Kies Console Application, en geef de naam MailerTest
Klik nu in de solution explorer met de rechtermuisknop op MailerTest en kies Set as Startup Project Klik in dit project met de rechtermuisknop op References en kies Add Reference Selecteer het tabblad Projects, kies het project van uw library ade.Email, en klik op OK
Vanaf nu kent het project MailerTest, alle public types die aangemaakt werden in uw bibliotheek. Open het door Visual Studio aangemaakte bestand Program.cs Plaats bovenaan using ade.Email; (als je een andere naam voor de library gebruikt hebt, moet je die naam uiteraard gebruiken.)
Wijzig de class program als volgt:
Opmerking: • Gebruik uw eigen email adres, zodat je zelf uw mail ontvangt • Het adres van de mailserver, is afhankelijk van uw provider. • telenet: uit.telenet.be • belgacom: relay.belgacom.be (ik ben niet 100% zeker of dit juist is) • dxADSL: smtp.dxadsl.be Start nu de toepassing. De mail zal onmiddellijk verzonden worden. En als alles juist is, zal je hem ook ontvangen:
Onze bibliotheek is nu getest vanuit Visual Studio. Het is nu tijd om ze klaar te maken voor gebruik vanuit een Delphi toepassing. Klik met de rechtermuisknop op de naam van de bibliotheek en kies Properties
In het scherm dat nu opengaat, klik je op de knop Assembly Information
Plaats een vinkje in het aangegeven vak.
Voor de volgende stappen heb je een GUID generator nodig. (Een GUID is een uniek 128-bit nummer) Volg deze link http://www.google.co.uk/search?hl=en&q=microsoft+guidgen.exe+download of zoek in google naar “microsoft guidgen.exe download” De eerste link die je ziet, zou de goede moeten zijn:
De rechtstreekse link naar dit artikel is: http://www.microsoft.com/downloads/details.aspx?familyid=94551f58-484f-4a8c-bb39adb270833afc&displaylang=en Download guidgen.exe en voer dit uit. Het utility wordt nu uitgepakt op uw computer in een folder GuidGen In die map zit de uiteindelijke tool GUIDGEN.EXE Wanneer je deze start, krijg je dit te zien:
Laat deze tool openstaan, en ga opnieuw naar uw bibliotheek in Visual Studio.
Open het bestand Mailer.cs Voeg deze lijn toe aan de usings: using System.Runtime.InteropServices; Voeg deze lijn toe, net boven de definitie van de class:
Klik in GUIDGEN op New GUID en daarna op Copy Kleef de guid opnieuw tussen de 2 accolades:
Compileer uw bibliotheek.
Nota: Dit werkt enkel indien dit in AssemblyInfo.cs (folder properties) staat:
Als je met SharpDevelop werkt, dan moet je dit manueel toevoegen. (De GUID moet uiteraard per project opnieuw aangemaakt worden)
Registreer uw bibliotheek, en maak een Type Library Kopieer de gecompileerde library ade.Email.dll van de Visual Studio project folder, naar de Delphi folder.
Ga naar het windows Start menu, en blader in de toepassingen naar Microsoft .NET Framework SDK 2.0 Klik op SDK Command Prompt Blader nu in deze commando prompt naar de folder waarin uw dotnet bibliotheek gemaakt werd. Gebruik het commando CD \ om naar de hoofdfolder te gaan. Gebruik CD naam-van-folder om een andere folder te selecteren. Gebruik DIR om de inhoud van een folder te bekijken. Type nu het commando: regasm
ade.Email.dll
Gebruik hier de naam die jij aan uw library gegeven hebt. Als je de library niet meer wenst te gebruiken, of van plaats wil veranderen, dan verwijder je de registratie met dit commando: Regasm ade.Email.dll /unregister En volg dit door het commando: tlbexp
ade.Email.dll
Nota: Meer informatie over het gebruik van regasm kan je hier vinden: http://msdn.microsoft.com/en-us/library/tzat5yw6(VS.80).aspx Om uw bibliotheek op de computer van uw klant te registeren volg je deze stappen: • Maak op uw ontwikkel PC, een registry bestand: regasm ade.Email.dll /regfile Er wordt nu een bestand gemaakt ade.Email.reg •
Dit .reg bestand kan je op de computer van uw klanten installeren door er bv dubbel op te klikken. Van zodra dit in de registry geimporteerd is, is uw bibliotheek gekend door de computer, en kan je ze op die computer gebruiken. (Het .dll bestand moet zoals altijd wel in de map van het Delphi executable bestand staan)
Maak nu uw Delphi toepassing Kies in Delphi Project – Import Type Library Klik op Add en blader in uw Delphi project folder, naar het bestand ade.Email.tlb Wijzig de Unit Dir Name, zodat deze naar uw Delphi project directory verwijst.
en klik op CREATE UNIT Er wordt nu een pascal unit aangemaakt. Deze wordt tevens in Delphi aan het project toegevoegd. In mijn voorbeeld noemt die unit: ade_Email_TLB.pas Opgelet: In Delphi5, 6 en vermoedelijk ook Delphi 7, wordt een te oude mscorlib_TLB.pas gebruikt. Download de juiste versie van onze site, en plaats die ook in uw Delphi project folder. Wanneer je de library opnieuw importeert, moet je nadien mscorlib_TLB opnieuw overschrijven met de goede versie. Doe je dit niet dan krijg je deze foutmeldingen bij het compileren:
In de Delphi unit waarin je uw library wil aanroepen, voeg je dit aan de uses toe: ade_Email_TLB, OleServer In mijn eenvoudige voorbeeld wordt dit:
De uses kunnen er bij u veel uitgebreider uitzien. Dit hangt onderandere af van de componenten die je aan het formulier hebt toegevoegd. Ik plaats op mijn Delphi formulier een knop, en plaats in het Click event volgende code: