На прошлой недели, случилось мне дописать функции отправки почты из своего приложения.
Используя стандартную связку компонентов Indy 8, идущих в комплекте с Delphi 6, почта отправлялась коряво: Тема кодировалась в ISO-8859, а тело сообщения в WIN-1251, порывшись в инете выснилось, что в новой версии delphi вопрос решается использованием функции EncodeHeader в исправленной библиотеке IdCoderHeader, однако в Delphi 6 её нет.
Более разглагольствовать не буду, ниже исправленная библиотека для Delphi6 и пример использования Indy для рассылки sms сообщений через сервер smsmail.com, прежде чем использовать смс-шлюз надо зарегистрироваться и получить 5 бесплатных смс сообщений для тестирования.
1. Добавьте в проект файл IdCoderHeader.pas
2. Добавьте его в раздел uses
Windows, Messages
....
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, IdMessage,IdCoderHeader;
3. Разместите на форме кнопку и IdMessage (дайте компоненту имя msg)
4. Создайте событие на действие onClick кнопки
Код:
begin
//формирование сообщения
with msg do
begin
ContentType := 'text/plain;charset=' + 'windows-1251'; //заголовок
Subject:=EncodeHeader('ТЕМА ПИСЬМА ПО РУССКИ',[],'B',bit8, 'windows-1251');//перекодировка темы
Recipients.EMailAddresses:='79271234567@smsmail.com';//почта получателя (в моём случае смс шлюз, можно подставить сюда любой номер телефона)
From.Address:='ВАША@ПОЧТА.ru'; //указываем автора письма
from.Name:='ALIAS';// Псевдоним для адреса отправителя (в смс-ке отобразиться вместо номера отправителя)
Body.Text:='ТЕЛО СООБЩЕНИЯ' //размещаем текст сообщения
end;
//настраиваем подключение
smtp:=TIdSMTP.Create(self); //smtp - переменная типа TIdSMTP которую надо объявить в var
with smtp do
begin
AuthenticationType:=atLogin;
Host:='smtp.mail.ru';// параметры отправителя на примере mail.ru
UserId:='ВАШАПОЧТА@mail.ru';//имя пользователя на сервере
Password:='ПАРОЛЬ';
port:=25;
Connect;//Пробуем подключиться
if Connected then Send(msg);//Если подключилсь - отправляем сообщение
Disconnect;//Отключились
end;
end;
Используя стандартную связку компонентов Indy 8, идущих в комплекте с Delphi 6, почта отправлялась коряво: Тема кодировалась в ISO-8859, а тело сообщения в WIN-1251, порывшись в инете выснилось, что в новой версии delphi вопрос решается использованием функции EncodeHeader в исправленной библиотеке IdCoderHeader, однако в Delphi 6 её нет.
Более разглагольствовать не буду, ниже исправленная библиотека для Delphi6 и пример использования Indy для рассылки sms сообщений через сервер smsmail.com, прежде чем использовать смс-шлюз надо зарегистрироваться и получить 5 бесплатных смс сообщений для тестирования.
1. Добавьте в проект файл IdCoderHeader.pas
2. Добавьте его в раздел uses
Windows, Messages
....
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, IdMessage,IdCoderHeader;
3. Разместите на форме кнопку и IdMessage (дайте компоненту имя msg)
4. Создайте событие на действие onClick кнопки
Код:
begin
//формирование сообщения
with msg do
begin
ContentType := 'text/plain;charset=' + 'windows-1251'; //заголовок
Subject:=EncodeHeader('ТЕМА ПИСЬМА ПО РУССКИ',[],'B',bit8, 'windows-1251');//перекодировка темы
Recipients.EMailAddresses:='79271234567@smsmail.com';//почта получателя (в моём случае смс шлюз, можно подставить сюда любой номер телефона)
From.Address:='ВАША@ПОЧТА.ru'; //указываем автора письма
from.Name:='ALIAS';// Псевдоним для адреса отправителя (в смс-ке отобразиться вместо номера отправителя)
Body.Text:='ТЕЛО СООБЩЕНИЯ' //размещаем текст сообщения
end;
//настраиваем подключение
smtp:=TIdSMTP.Create(self); //smtp - переменная типа TIdSMTP которую надо объявить в var
with smtp do
begin
AuthenticationType:=atLogin;
Host:='smtp.mail.ru';// параметры отправителя на примере mail.ru
UserId:='ВАШАПОЧТА@mail.ru';//имя пользователя на сервере
Password:='ПАРОЛЬ';
port:=25;
Connect;//Пробуем подключиться
if Connected then Send(msg);//Если подключилсь - отправляем сообщение
Disconnect;//Отключились
end;
end;
Комментариев нет:
Отправить комментарий