 |
Статистика |
 |
|
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
 |
|
 |
Каталог статей |
 |
Библиотека synapse. Создание файла письма *.msg .
Библиотека
synapse.
Создание файла письма *.msg .
В моей практике мне приходится работать с почтой, я не пытаюсь написать
свой почтовик, т.к. уже устоялась практика работы в TheBat!. Но почту
становиться все сложнее обрабатывать вручную и приходится
изворачиваться, писать "надстройки” над TheBat,
поскольку разработчики не могут встроить плагины. Ну да ладно, это их
проблемы, а у нас другие задачи, с которыми мы справимся на ура
используя библиотеку Synapse.
Раньше я работал с Indy, впечатление честно сказать не очень, много
проблем с кодировками и еще куча багов, уже и не помню. Представляю
вашему вниманию бесплатную библиотеку Synapse,
библиотека предназначена для работы с TCP/IP и распростроняется
бесплатно, содержит в архиве исходные коды. На момент написания статьи
существовал стабильный 39 релиз.
Установка очень проста, распакуйте архив и добавьте путь в Library
path:
Tools –
Environment options (закладка Library) – Directories.
Все, теперь вручную включайте в свой проект нужные вам модули. Пока, в
своей практике, я использую модули для работы с почтовыми заголовками.
Итак, приступим. Включите в проект mimemess
и synachar,
первый модуль позволяет работать с заголовками почтового сообщения,
второй модуль содержит кодировки заголовков. Очень богатый набор,
позволяет без труда работать с разными кодировками.
uses
… mimemess, synachar. |
Предлогаю написать программу, которая позволит создать файл письма
формата RFC822.
Обший
вид программы.
![[Image]](/01.jpg)
Необходимо на форму добавить следующие компоненты
Button1:
TButton;
Memo1: TMemo;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
ListBox1: TListBox;
Button2: TButton;
OpenDialog1: TOpenDialog; |
Для того что бы прикреплять файлы к письму, добавим следующую процедуру
procedure
TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ListBox1.Items:=OpenDialog1.Files; // Добавить все выбранные
файлы
end; |
Для создания письма, создадим следующую процедуру
procedure
TForm1.Button1Click(Sender: TObject);
var
mMes:TMimeMess; // TMimeMess - Класс заголовков
сообщения
i:integer;
begin
with mMes do
begin
mMes:=TMimeMess.Create;
mMes.Header.CharsetCode:=CP1251; // Установим
кодировку заголовков
Header.ToList.Text:=LabeledEdit2.Text;
//e-mail адрес получателя
Header.From:=LabeledEdit1.Text;
Header.Priority:=MP_high; // приоритет,
описан в mimemess.pas
Header.ReplyTo:=
LabeledEdit2.Text;
// обратный адрес
if CheckBox1.Checked then
Header.CustomHeaders.Add('Return-Receipt-To='+LabeledEdit2.Text)
;
if CheckBox2.Checked then
Header.CustomHeaders.Add('Disposition-Notification-To='+LabeledEdit2.Text)
;
AddPartMultipart('',Nil);
Header.Subject:=LabeledEdit3.Text;
mMes.AddPartMultipart('',nil);
if ListBox1.Items.Count<>0
then
for i:=0 to
ListBox1.Items.Count-1 do
mMes.AddPartBinaryFromFile(ListBox1.Items[i],mMes.MessagePart);
AddPartText(Memo1.Lines,MessagePart);
end;
mMes.EncodeMessage;
mMes.Lines.SaveToFile('c:\TestFile.msg');
end; |
Разберем ее подробнее.
mMes:=TMimeMess.Create; - создаем сообщение, происходит инициализация
сообщения.
mMes.Header.CharsetCode:=CP1251; Установим
кодировку заголовков, полный список поддерживаемых кодировок
ISO_8859_1:
ISO_8859_2:
ISO_8859_3:
ISO_8859_4:
ISO_8859_5:
ISO_8859_6:
ISO_8859_7:
ISO_8859_8:
ISO_8859_9:
ISO_8859_10:
ISO_8859_13:
ISO_8859_14:
ISO_8859_15:
CP1250:
CP1251:
CP1252:
CP1253:
CP1254:
CP1255:
CP1256:
CP1257:
CP1258:
KOI8_R:
CP895:
CP852:
UCS_2:
UCS_4:
UTF_8:
UTF_7:
UTF_7mod:
UCS_2LE:
UCS_4LE:
UTF_16:
UTF_16LE:
UTF_32:
UTF_32LE: |
C99:
JAVA:
ISO_8859_16:
KOI8_U:
KOI8_RU:
CP862:
CP866:
MAC:
MACCE:
MACICE:
MACCRO:
MACRO:
MACCYR:
MACUK:
MACGR:
MACTU:
MACHEB:
MACAR:
MACTH:
ROMAN8:
NEXTSTEP:
ARMASCII:
GEORGIAN_AC:
GEORGIAN_PS:
KOI8_T:
MULELAO:
CP1133:
TIS620:
CP874:
VISCII:
TCVN:
ISO_IR_14:
JIS_X0201:
JIS_X0208:
JIS_X0212:
GB1988_80: |
GB2312_80:
ISO_IR_165:
ISO_IR_149:
EUC_JP:
SHIFT_JIS:
CP932:
ISO_2022_JP:
ISO_2022_JP1:
ISO_2022_JP2:
GB2312:
CP936:
GB18030:
ISO_2022_CN:
ISO_2022_CNE:
HZ:
EUC_TW:
BIG5:
CP950:
BIG5_HKSCS:
EUC_KR:
CP949:
CP1361:
ISO_2022_KR:
CP737:
CP775:
CP853:
CP855:
CP857:
CP858:
CP860:
CP861:
CP863:
CP864:
CP865:
CP869:
CP1125: |
Header.CustomHeaders.Add('Return-Receipt-To='+LabeledEdit2.Text)
Добавляем заголовок, для того, что бы нам пришел ответ от сервера о
доставке, можно использовать любые заголовки, которые регламентируются
RFC822. Заголовок «Disposition-Notification-To»
– отвечает за уведомление о прочтении.
AddPartMultipart('',Nil); - Создаем часть письма, а данной части
разместим прикрепленные файлы следующей строчкой кода
mMes.AddPartBinaryFromFile(ListBox1.Items[i],mMes.MessagePart);
AddPartText(Memo1.Lines,MessagePart); Добавляем текст письма, для этих
целей существует несколько функций:
AddPartTextEx
AddPartHTML
AddPartTextFromFile
AddPartHTMLFromFile |
mMes.EncodeMessage; - раскодируем сообщение, эту нужно делать перед тем
как хотите сохранить сообщение.
mMes.Lines.SaveToFile('c:\TestFile.msg'); - сохраняем файл.
Теперь созданное письмо можно загрузить в TheBat и отправить. Я делаю
это так
cd:=Путь к TheBat + ' /IMPORTU="'+Название
ящика+'";FOLDER="Outbox";IN='+путь где находится файл+'*.MSG;W;R'
WinExec(PAnsiChar(cd), SW_SHOW);
Таким образом можно организовать генерацию и отправку писем. У меня
таким образом генерируются и отправляются поздравления.
Скачать
метриал к статье
Ждите еще статей по библиотеке synapse.
Автор neusro.
|
Категория: Библиотека Synapse | Добавил: neusro (06.11.2009)
| Автор: neusro
|
Просмотров: 30021 | Комментарии: 2
| Рейтинг: 0.0/0 |
|
 |
Copyright Neusro&ScorpDark © 2025 |
 |
|