Mai jos sunt instrucțiuni pentru crearea unui „expeditor de e-mail” care include o opțiune pentru trimiterea de mesaje de e-mail și atașamente direct dintr-o aplicație Delphi. Înainte de a începe, luați în considerare alternativa ...
Să presupunem că aveți o aplicație care operează pe unele date ale bazei de date, printre alte sarcini. Utilizatorii trebuie să exporte date din aplicația dvs. și trimiteți datele printr-un e-mail (precum un raport de eroare). Fără abordarea prezentată mai jos, trebuie să exportați datele într-un fișier extern și apoi să utilizați un client de e-mail pentru a le trimite.
Există multe modalități prin care poți trimite un e-mail direct de la Delphi, dar cel mai simplu este să folosești API-ul ShellExecute. Aceasta va trimite e-mailul utilizând clientul de e-mail implicit instalat pe computer. Deși această abordare este acceptabilă, nu puteți trimite atașamente în acest fel.
O altă tehnică folosește Microsoft Outlook și OLE pentru a trimite emailul, de data aceasta cu suport de atașare, dar este necesar ca MS Outlook să fie utilizat.
O altă opțiune este să folosiți suportul încorporat al Delphi pentru API-ul Windows Simple Mail. Aceasta funcționează numai dacă utilizatorul are instalat un program de e-mail compatibil MAPI.
Tehnica despre care discutăm aici folosește componente Indy (Internet Direct) - o suită excelentă de componente de internet care cuprinde protocoale de internet populare scrise în Delphi și bazate pe blocarea prizelor..
Trimiterea (sau regăsirea) mesajelor de e-mail cu componente Indy (care se livrează cu Delphi 6+) este la fel de ușoară precum aruncarea unei componente sau a două pe un formular, setarea unor proprietăți și „apăsarea unui buton”.
Pentru a trimite un e-mail cu atașamente de la Delphi folosind Indy, vom avea nevoie de două componente. În primul rând, TIdSMTOP este utilizat pentru a conecta și comunica (trimite poștă) cu un server SMTP. În al doilea rând, TIdMessage gestionează stocarea și codificarea mesajelor.
Când mesajul este construit (când TIdMessage este "umplut" cu date), e-mailul este livrat către un server SMTP folosind TIdSMTP.
Am creat un proiect simplu de expediere de mail pe care îl explic mai jos. Puteți descărca codul sursă complet aici.
Notă: Acest link este o descărcare directă în fișierul ZIP pentru proiect. Ar trebui să poți să-l deschizi fără probleme, dar dacă nu poți, folosește 7-Zip pentru a deschide arhiva, astfel încât să poți extrage fișierele de proiect (care sunt stocate într-un folder numit Sendmail).
După cum puteți vedea din ecranul de proiectare-timp, pentru a trimite un e-mail folosind funcția TIdSMTP componentă, cel puțin trebuie să specificați serverul de poștă SMTP (gazdă). Mesajul are nevoie de părțile de e-mail obișnuite completate, cum ar fi Din, La, Subiect, etc.
Iată codul care gestionează trimiterea unui e-mail cu un atașament:
procedură TMailerForm.btnSendMailClick (Expeditor: TObject); începe StatusMemo.Clear; // configurarea SMTP SMTP.Host: = ledHost.Text; SMTP.Port: = 25; // mesaj de configurare prin e-mail MailMessage.From.Address: = ledFrom.Text; MailMessage.Recipients.EMailAddresses: = ledTo.Text + ',' + ledCC.Text; MailMessage.Subject: = ledSubject.Text; MailMessage.Body.Text: = Body.Text; dacă FileExists (ledAttachment.Text) apoi TIdAttachment.Create (MailMessage.MessageParts, ledAttachment.Text); // trimite mail încerca încerca SMTP.Connect (1000); SMTP.Send (MailMessage); cu exceptia pe E: Excepție face StatusMemo.Lines.Insert (0, 'ERROR:' + E.Message); Sfârșit; in cele din urma dacă SMTP.Connected apoi SMTP.Disconnect; Sfârșit; Sfârșit; (* btnSendMail Click *)
Notă: În codul sursă, veți găsi două proceduri suplimentare care sunt utilizate pentru a face valorile Gazdă, Din, și La editați casetele persistente, folosind un fișier INI pentru stocare.