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.
Trimiterea de e-mail de la Delphi
Există multe modalități prin care poți trimite un e-mail direct de la Delphi, dar cel mai simplu este să folosești ShellExecute API-ul. 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 Indy Componente (Internet Direct) - o suită excelentă de componente de internet care cuprinde protocoale de internet populare scrise în Delphi și bazate pe blocarea prizelor.
Metoda TIdSMTP (Indy)
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.
E-mail Cod Sursa expeditorului
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ă puteț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, Subiectetc.
Iată codul care gestionează trimiterea unui e-mail cu un atașament:
procedură TMailerForm.btnSendMailClick (Expeditor: TObject); începe StatusMemo. Clar; // configurarea SMTP SMTP.Host: = ledHost. Text; SMTP.Port: = 25; // mesaj de configurare prin e-mail MailMessage. Din. Adresa: = ledFrom. Text; MailMessage. Destinatari. EMailAddresses: = ledTo. Text + ',' + ledCC.Text; MailMessage. Subiect: = ledSubject. Text; MailMessage. Corp. Text: = Corp. Text; dacă FileExists (ledAttachment. Text) apoi TIdAttachment. Creați (MailMessage. MessageParts, ledAttachment. Text); // trimite mailîncercaîncerca SMTP.Connect (1000); SMTP.Send (MailMessage); cu exceptiape E: Excepție. StatusMemo. Linii. Introduceți (0, 'ERROR:' + E.Mesaj); Sfârșit; in cele din urmadacă 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.