Wysyłanie wiadomości e-mail z załącznikami za pomocą Delphi i Indy

Poniżej znajdują się instrukcje dotyczące tworzenia „nadawcy wiadomości e-mail”, który zawiera opcję wysyłania wiadomości e-mail i załączników bezpośrednio z aplikacji Delphi. Zanim zaczniemy, rozważ alternatywę ...

Załóżmy, że masz aplikację, która działa między niektórymi danymi na bazie danych. Użytkownicy muszą wyeksportować dane z aplikacji i wysłać dane pocztą e-mail (np. raport o błędzie). Bez podejścia opisanego poniżej musisz wyeksportować dane do zewnętrznego pliku, a następnie użyć klienta e-mail, aby go wysłać.

Wysyłanie wiadomości e-mail z Delphi

Istnieje wiele sposobów wysyłania wiadomości e-mail bezpośrednio z Delphi, ale najprostszym sposobem jest użycie ShellExecute API. Spowoduje to wysłanie wiadomości e-mail za pomocą domyślnego klienta poczty e-mail zainstalowanego na komputerze. Chociaż takie podejście jest dopuszczalne, nie możesz w ten sposób wysyłać załączników.

Tym razem inna technika wykorzystuje Microsoft Outlook i OLE do wysłania wiadomości e-mail z obsługa załączników, ale wtedy należy użyć MS Outlook.

instagram viewer

Jeszcze inną opcją jest użycie wbudowanej obsługi Delphi dla Windows Simple Mail API. Działa to tylko wtedy, gdy użytkownik ma zainstalowany program pocztowy zgodny z MAPI.

Technika, o której tu mówimy, wykorzystuje Indy Komponenty (Internet Direct) - świetny pakiet komponentów internetowych składający się z popularnych protokołów internetowych napisanych w Delphi i opartych na blokujących gniazdach.

Metoda TIdSMTP (Indy)

Wysyłanie (lub pobieranie) wiadomości e-mail z komponentami Indy (które są dostarczane z Delphi 6+) jest tak proste, jak upuszczenie jednego lub dwóch komponentów w formularzu, ustawienie niektórych właściwości i „kliknięcie przycisku”.

Aby wysłać wiadomość e-mail z załącznikami z Delphi za pomocą Indy, potrzebujemy dwóch składników. Po pierwsze TIdSMTOP służy do łączenia się i komunikacji (wysyłania poczty) z serwerem SMTP. Po drugie, TIdMessage obsługuje przechowywanie i kodowanie wiadomości.

Kiedy wiadomość jest konstruowana (kiedy TIdMessage jest „wypełniony” danymi), wiadomość e-mail jest dostarczana na serwer SMTP za pomocą TIdSMTP.

Kod źródłowy nadawcy wiadomości e-mail

Stworzyłem prosty projekt nadawcy poczty, który wyjaśnię poniżej. Możesz pobrać pełny kod źródłowy tutaj.

Uwaga: Ten link to bezpośrednie pobranie pliku ZIP projektu. Powinieneś być w stanie otworzyć go bez żadnych problemów, ale jeśli nie możesz, użyj 7-Zip aby otworzyć archiwum i wyodrębnić pliki projektu (które są przechowywane w folderze o nazwie Wyślij maila).

Jak widać ze zrzutu ekranu w czasie projektowania, aby wysłać wiadomość e-mail za pomocą TIdSMTP komponent, musisz przynajmniej określić serwer pocztowy SMTP (host). Sama wiadomość wymaga regularnych wypełnionych części wiadomości e-mail, takich jak Od, Do, Przedmiotitp.

Oto kod, który obsługuje wysyłanie jednego e-maila z załącznikiem:

procedura TMailerForm.btnSendMailClick (Sender: TObject); zaczynać StatusMemo. Jasny; // konfiguracja SMTP SMTP.Host: = ledHost. Tekst; SMTP.Port: = 25; // konfiguracja wiadomości e-mail MailMessage. Od. Adres: = ledFrom. Tekst; MailMessage. Odbiorcy Adres e-mail: = ledTo. Tekst + ”,„ + ledCC.Text; MailMessage. Temat: = ledSubject. Tekst; MailMessage. Ciało. Tekst: = Treść. Tekst; gdyby FileExists (ledAttachment. Tekst) następnie TIdAttachment. Utwórz (MailMessage. MessageParts, ledAttachment. Tekst); //Wyślij mailapróbowaćpróbować SMTP.Connect (1000); SMTP.Send (MailMessage); z wyjątkiemna E: Wyjątek. StatusMemo. Linie. Wstaw (0, „BŁĄD:” + E. Wiadomość); koniec; Wreszciegdyby SMTP.Connected następnie SMTP.Disconnect; koniec; koniec; (* btnSendMail Click *)

Uwaga: Wewnątrz kodu źródłowego znajdziesz dwie dodatkowe procedury, które są używane do tworzenia wartości Gospodarz, Od, i Do pola edycji są trwałe, przy użyciu pliku INI do przechowywania.