Sende e-post med vedlegg ved hjelp av Delphi & Indy

click fraud protection

Nedenfor er instruksjoner for hvordan du oppretter en "e-postsender" som inkluderer et alternativ for å sende e-postmeldinger og vedlegg direkte fra en Delphi-applikasjon. Før vi begynner, bør du vurdere alternativet ...

Anta at du har en applikasjon som opererer på noen databasedata, blant andre oppgaver. Brukere må eksportere data fra applikasjonen din og sende dataene via en e-post (som en feilrapport). Uten tilnærmingen som er beskrevet nedenfor, må du eksportere dataene til en ekstern fil og deretter bruke en e-postklient til å sende dem.

Sende e-post fra Delphi

Det er mange måter du kan sende en e-post direkte fra Delphi, men den enkleste måten er å bruke ShellExecute API. Dette vil sende e-postmeldingen ved å bruke standard e-postklienten installert på datamaskinen. Selv om denne tilnærmingen er akseptabel, kan du ikke sende vedlegg på denne måten.

En annen teknikk bruker Microsoft Outlook og OLE for å sende e-posten, denne gangen med vedleggsstøtte, men MS Outlook kreves da å bli brukt.

instagram viewer

Nok et alternativ er å bruke Delphis innebygde støtte for Windows Simple Mail API. Dette fungerer bare hvis brukeren har et MAPI-kompatibelt e-postprogram installert.

Teknikken vi diskuterer her bruker Indy (Internet Direct) komponenter - en flott internettkomponent-pakke som består av populære internettprotokoller skrevet i Delphi og basert på blokkering av stikkontakter.

TIdSMTP-metoden (Indy)

Det er like enkelt å sende (eller hente) e-postmeldinger med Indy-komponenter (som leveres med Delphi 6+) som å slippe en komponent eller to på et skjema, angi noen egenskaper og "klikke på en knapp."

For å sende en e-post med vedlegg fra Delphi ved bruk av Indy, trenger vi to komponenter. Først TIdSMTOP brukes til å koble til og kommunisere (sende e-post) med en SMTP-server. For det andre: TIdMessage håndterer lagring og koding av meldingene.

Når meldingen er konstruert (når TIdMessage er "fylt" med data), blir e-posten levert til en SMTP-server ved hjelp av TIdSMTP.

E-post avsender kildekode

Jeg har laget et enkelt mail avsender prosjekt som jeg forklarer nedenfor. Du kan laste ned hele kildekoden her.

Merk: Den lenken er en direkte nedlasting til ZIP-filen for prosjektet. Du skal kunne åpne den uten problemer, men hvis du ikke kan bruke det 7-Zip for å åpne arkivet slik at du kan trekke ut prosjektfilene (som er lagret i en mappe som heter Sendmail).

Som du kan se fra designtid-skjermdumpen, kan du sende en e-post med TIdSMTP komponent, trenger du i det minste å spesifisere SMTP-postserveren (vert). Selve meldingen trenger de vanlige e-postdelene som er fylt ut, som Fra, Til, Emne, etc.

Her er koden som håndterer sending av en e-post med vedlegg:

fremgangsmåte TMailerForm.btnSendMailClick (avsender: TObject); begynne StatusMemo. Klar; // oppsett SMTP SMTP.Host: = ledHost. Tekst; SMTP.Port: = 25; // konfigurer e-postmelding MailMessage. Fra. Adresse: = ledFrom. Tekst; MailMessage. Mottakere. EMailAddresses: = ledTo. Tekst + ',' + ledCC.Text; MailMessage. Emne: = ledSubject. Tekst; MailMessage. Kropp. Tekst: = Kropp. Tekst; hvis FileExists (ledAttachment. Tekst) deretter TIdAttachment. Opprett (MailMessage. MessageParts, ledAttachment. Tekst); // send mailprøveprøve SMTP.Connect (1000); SMTP.Send (MailMessage); unntatt E: Unntak gjør. StatusMemo. Lines. Sett inn (0, 'FEIL:' + E.Message); slutt; endelighvis SMTP.Connected deretter SMTP.Disconnect; slutt; slutt; (* btnSendMail Click *)

Merk: Inne i kildekoden finner du to ekstra prosedyrer som brukes til å lage verdiene til Vert, Fra, og Til rediger bokser vedvarende, bruker en INI-fil for lagring.

instagram story viewer