Delphi для всех

Отправить e-mail при помощи delphi

Для отправки почты нам понадобится компонент idSMTP со страницы Indy Clients палитры компонентов Delphi.

Для соединения с SMTP сервером, который будет осуществлять отправку нашей почты, нужно указать порт и его URL, для сервера mail.ru это производится следующим образом:

IdSMTP1.Host := 'smtp.mail.ru';
IdSMTP1.Port:=25; // 25 порт используется для передачи сообщения

Соединение с сервером производится методом Connect:

IdSMTP1.Connect;

Если при соединении с сервером требуется авторизация, то значение свойства AuthenticationType нужно установить в atLogin, при этом в инспекторе объектов также нужно определить свойства Username(имя пользователя. К примеру, Username почтового ящика delphi@mail.ru - delphi) и Password(пароль на ящик), или сделать то же программно:

IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Username:='login';
IdSMTP1.Password:='password';

Если авторизация не требуется, то свойство AuthenticationType в инспекторе объектов нужно установить в atNone, либо сделать это программно:

IdSMTP1.AuthenticationType:=atNone;

Структура письма реализуется в Delphi отдельным компонентом TIdMessage, расположенным на палитре компонентов Indy Misc.

Если вам нужно отправить с письмом файл, т.е. аттачмент, то для этого нужно создать объект класса TidAttachment.

TIdAttachment.Create(Message.MessageParts,'c:\file.zip');

Теперь наша структура письма содержит информацию о аттачменте. После отправки сообщения нужно разорвать соединение с сервером, чтобы оно не "висело". Это производится методом Disconnect:

IdSMTP1.Disconnect;

Полный пример программы находится ниже

begin
IdSMTP1.Port:=25; // порт по которому будет осуществляться подключение
IdSMTP1.Host:='smtp.mail.ru'; // адресс почтового сервера
IdSMTP1.Username:='login'; // логин пользователя
IdSMTP1.Password:='password'; // пароль пользователя
IdSMTP1.AuthenticationType:=atLogin;
with IdMessage1 do
begin
From.Text := 'текст сообщения';
Recipients.EMailAddresses := 'mail@mail.ru'; //указываем адрес получателя
Subject:='тема сообщения'; //текст темы сообщения
TIdAttachment.Create(IdMessage1.MessageParts,'c:\file.zip'); // прикрепляем фаил
end;
IdSMTP1.Connect(5000);
try
IdSMTP1.Send(IdMessage1); // отправляем сообщение
finally
IdSMTP1.Disconnect;
end;
                                                                                                                                                                                                                                                                    
Хостинг от uCoz