Изпращане на имейли с прикачени файлове с помощта на Delphi & Indy

click fraud protection

По-долу са инструкциите за създаване на „изпращач по имейл“, който включва опция за изпращане на имейл съобщения и прикачени файлове директно от приложение на Delphi. Преди да започнем, помислете за алтернативата ...

Да предположим, че имате приложение, което работи върху някои данни от база данни, наред с други задачи. Потребителите трябва да експортират данни от вашето приложение и изпратете данните чрез имейл (като доклад за грешка). Без подхода, посочен по-долу, трябва да експортирате данните във външен файл и след това да използвате имейл клиент, за да го изпратите.

Изпращане на имейл от Delphi

Има много начини да изпращате имейл директно от Delphi, но най-простият начин е да използвате ShellExecute API. Това ще изпрати имейла с помощта на стандартния имейл клиент, инсталиран на компютъра. Въпреки че този подход е приемлив, не можете да изпращате прикачени файлове по този начин.

Друга техника използва Microsoft Outlook и OLE този път с поддръжка на прикачен файл, но след това се изисква MS Outlook, за да се използва.

instagram viewer

Още една опция е да използвате вградената поддръжка на Delphi за API на Simple Mail за Windows. Това работи само ако потребителят има инсталирана програма за електронна поща, съвместима с MAPI.

Използва се техниката, която обсъждаме тук Indy (Internet Direct) компоненти - страхотен интернет компонент, съставен от популярни интернет протоколи, написани на Delphi и базирани на блокиращи гнезда.

Методът TIdSMTP (Indy)

Изпращането (или извличането) на имейл съобщения с компоненти на Indy (което се доставя с Delphi 6+) е толкова лесно, колкото пускането на компонент или два във формуляр, задаване на някои свойства и "щракване на бутон".

За да изпратим имейл с прикачени файлове от Delphi, използвайки Indy, ще ни трябват два компонента. Първо, TIdSMTOP се използва за свързване и комуникация (изпращане на поща) със SMTP сървър. Второ, TIdMessage обработва съхраняването и кодирането на съобщенията.

Когато съобщението е конструирано (кога TIdMessage е "изпълнен" с данни), имейлът се доставя на SMTP сървър с помощта на TIdSMTP.

Изпращане на имейл код на изпращача

Създадох прост проект за изпращане на поща, който обяснявам по-долу. Можете да изтеглите пълния изходен код тук.

Забележка: Тази връзка е директно изтегляне към ZIP файла за проекта. Трябва да можете да го отворите без проблеми, но ако не можете, използвайте 7-Zip за да отворите архива, за да можете да извлечете файловете на проекта (които се съхраняват в папка, наречена Изпрати писмо).

Както можете да видите от екрана на времето за проектиране, да изпратите имейл с помощта на TIdSMTP компонент, най-малкото трябва да посочите SMTP пощенския сървър (хост). Самото съобщение се нуждае от редовно попълнени части за електронна поща, като например от, Да се, Предмети т.н.

Ето кода, който обработва изпращането на един имейл с прикачен файл:

процедура TMailerForm.btnSendMailClick (Подател: TObject); започвам StatusMemo. Ясно; // настройка SMTP SMTP.Host: = ledHost. Текст; SMTP.Port: = 25; // съобщение за настройка на пощата MailMessage. От. Адрес: = ledFrom. Текст; MailMessage. Получатели. EMailAddresses: = ledTo. Text + ',' + ledCC.Text; MailMessage. Тема: = ledSubject. Текст; MailMessage. Тяло. Текст: = Тяло. Текст; ако FileExists (ledAttachment). Текст) тогава TIdAttachment. Създаване (MailMessage) MessageParts, ledAttachment. Текст); //изпрати писмоопитвамопитвам SMTP.Connect (1000); SMTP.Send (MailMessage); с изключениеНа Д: Изключение прави. StatusMemo. Зума. Вмъкване (0, 'ГРЕШКА:' + Е.Масаж); край; накраяако SMTP.Connected тогава SMTP.Disconnect; край; край; (* btnSendMail щракване *)

Забележка: Вътре в изходния код ще намерите две допълнителни процедури, които се използват за определяне на стойностите на домакин, от, и Да се редактирането на полета е постоянно, като се използва INI файл за съхранение.

instagram story viewer