E-mails verzenden met bijlagen met Delphi & Indy

Hieronder staan ​​instructies voor het maken van een "e-mailafzender" met een optie voor het verzenden van e-mailberichten en bijlagen rechtstreeks vanuit een Delphi-toepassing. Overweeg voordat we beginnen het alternatief ...

Stel dat u een toepassing hebt die onder andere op databasegegevens werkt. Gebruikers moeten gegevens vanuit uw toepassing exporteren en stuur de gegevens via een e-mail (zoals een foutenrapport). Zonder de hieronder beschreven aanpak, moet u de gegevens exporteren naar een extern bestand en vervolgens een e-mailclient gebruiken om deze te verzenden.

E-mail verzenden vanuit Delphi

Er zijn veel manieren waarop u een e-mail rechtstreeks vanuit Delphi kunt verzenden, maar de eenvoudigste manier is om de ShellExecute API. Hiermee wordt de e-mail verzonden met de standaard e-mailclient die op de computer is geïnstalleerd. Hoewel deze aanpak acceptabel is, kunt u geen bijlagen op deze manier verzenden.

Een andere techniek maakt gebruik van Microsoft Outlook en OLE om de e-mail te verzenden, dit keer met bijlage-ondersteuning, maar dan moet MS Outlook worden gebruikt.

instagram viewer

Nog een andere optie is om de ingebouwde ondersteuning van Delphi voor de Windows Simple Mail API te gebruiken. Dit werkt alleen als de gebruiker een MAPI-compatibel e-mailprogramma heeft geïnstalleerd.

De techniek die we hier bespreken gebruikt Indy (Internet Direct) componenten - een geweldige suite met internetcomponenten die bestaat uit populaire internetprotocollen die zijn geschreven in Delphi en zijn gebaseerd op blokkerende sockets.

De TIdSMTP (Indy) -methode

E-mailberichten verzenden (of ophalen) met Indy-componenten (die wordt geleverd met Delphi 6+) is net zo eenvoudig als een component of twee op een formulier neerzetten, enkele eigenschappen instellen en "op een knop klikken".

Om een ​​e-mail met bijlagen van Delphi via Indy te verzenden, hebben we twee componenten nodig. Eerst de TIdSMTOP wordt gebruikt om verbinding te maken en te communiceren (e-mail verzenden) met een SMTP-server. Ten tweede, de TIdMessage verzorgt het opslaan en coderen van de berichten.

Wanneer het bericht is opgebouwd (wanneer TIdMessage is "gevuld" met gegevens), wordt de e-mail afgeleverd bij een SMTP-server met behulp van de TIdSMTP.

Broncode e-mailafzender

Ik heb een eenvoudig e-mailafzenderproject gemaakt dat ik hieronder uitleg. U kunt de volledige broncode hier downloaden.

Notitie: Die link is een directe download naar het ZIP-bestand voor het project. Je zou het zonder problemen moeten kunnen openen, maar als je het niet kunt, gebruik het dan 7-zip om het archief te openen zodat u de projectbestanden kunt uitpakken (die zijn opgeslagen in een map met de naam Verzend mail).

Zoals u kunt zien in de screenshot tijdens het ontwerpen, kunt u een e-mail verzenden met de TIdSMTP component, moet u ten minste de SMTP-mailserver (host) opgeven. Voor het bericht zelf zijn de normale e-mailonderdelen ingevuld, zoals de Van, Naar, Onderwerpen, enz.

Hier is de code die het verzenden van één e-mail met een bijlage verwerkt:

procedure TMailerForm.btnSendMailClick (Sender: TObject); beginnen StatusMemo. Doorzichtig; // SMTP instellen SMTP.Host: = ledHost. Tekst; SMTP.Port: = 25; // e-mail instellen Mailbericht. Van. Adres: = ledFrom. Tekst; Mailbericht. Ontvangers. EMailAddresses: = ledTo. Tekst + ',' + ledCC.Text; Mailbericht. Onderwerp: = ledSubject. Tekst; Mailbericht. Lichaam. Tekst: = Body. Tekst; als FileExists (ledAttachment. Tekst) vervolgens TIdAttachment. Maken (MailMessage. MessageParts, ledAttachment. Tekst); //Verzend mailproberenproberen SMTP.Connect (1000); SMTP.Send (MailMessage); behalveAan E: Uitzondering wel. StatusMemo. Lijnen. Invoegen (0, 'ERROR:' + E.Message); einde; Tenslotteals SMTP. Verbonden vervolgens SMTP. Verbinding verbreken; einde; einde; (* btnSendMail Click *)

Notitie: In de broncode vindt u twee extra procedures die worden gebruikt om de waarden van de te maken Gastheer, Vanen Naar blijvende bewerkingsvakken, met een INI-bestand voor opslag.

instagram story viewer