Отправка сообщения на E-mail через SMTP

  Как отправить сообщение на почту через Delphi? Очень просто!
И так, начнем с самого обычного процесса: кидания компонентов на форму :)

  1. Компонент IdSMTP из вкладки Indy Clients;
  2. Компонент IdMessage из вкладки Indy Misc;
  3. Компонент IdEncoderMIME1 из вкладки Indy Misc;
  4. Компонент Button из вкладки Standart.
Form
Form

После строки {$R *.dfm} пишем код. Комментарии внутри.
{$R *.dfm}

//Функция конвертирования в кодировку windows-1251
function ConvertToWIN1251(instr:string):string;
begin
  result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?=';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
attach: TidAttachment;
begin

  IdSMTP1.AuthenticationType:= atLogin;
  IdSMTP1.Username:='[email protected]'; //Логин
  IdSMTP1.Password:='password'; //Пароль
  IdSMTP1.Host:='smtp.mail.ru'; //Хост 
  //Хосты: smtp.inbox.ru; smtp.list.ru; smtp.bk.ru; smtp.yandex.ru и т.д.
  IdSMTP1.Port:=25; //Порт (25 - по умолчанию)
  //Порты mail.ru: 587 и 2525 (без шифрования) или 465 (с шифрованием)

  IdMessage1.CharSet:='windows-1251'; //Кодировка в теле сообщения
  IdMessage1.ContentType:='text/plain';
  // или 
  //IdMessage1.ContentType:='text/html'; 
  //если в теле сообщения будет присутствовать HTML код
  IdMessage1.Body.text:='Текст'; //Текст сообщения
  IdMessage1.Subject:=ConvertToWIN1251('Тема'); //Тема сообщения
  IdMessage1.From.Address:='[email protected]'; //Адрес отправителя
  //IdMessage1.From.Name:=ConvertToWIN1251('User'); //Имя отправителя
  IdMessage1.Recipients.EMailAddresses:='[email protected]'; //Кому отправить письмо (можно через запятую если несколько e-mail'ов)
  IdMessage1.IsEncoded:=true;
  //attach:=TIdAttachment.Create(IdMessage1.MessageParts,'Путь до файла'); //Вложение

  try
    //Соединение с почтовым сервером
    IdSMTP1.Connect();
    IdSMTP1.Send(IdMessage1);
    showmessage('Сообщение отправлено');
  except
    showmessage('Ошибка при отправке сообщения');
  end;
//Отсоединяемся от почтового сервера
IdSMTP1.Disconnect;
end;
Вот и всё, Удачи!



Добавил(а): oktavius Дата: 2012-11-21
БРАВО!)



Добавил(а): AndHacker Дата: 2014-11-02
Этот пример, сейчас, точно работает?



Добавил(а): Lomanu4 Дата: 2014-11-22
У меня пишет вот такую ахинею вызвал исключение класса eidprotocolreplyerror с сообщением Smtp is available only with SSL or TLS connection enable


  1. leon
    leon a year ago
    отправка очень сильно изменилась :( сейчас больше нет такого
Отменить.