Пятница, 26.04.2024, 06:24
Разработчику программного обеспечения
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Форма входа
Категории раздела
Первое знакомство с Delphi и первые шаги [8]
Меню Delphi [11]
Библиотека Synapse [2]
Палитра компонентов Delphi [2]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
банеры
Яндекс цитирования
 Каталог статей
Главная » Статьи » Delphi » Библиотека Synapse

Библиотека 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]

Необходимо на форму добавить следующие компоненты

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
Просмотров: 29663 | Комментарии: 31 | Рейтинг: 0.0/0
Всего комментариев: 4
4 Ceeks8Rj1h  
0
Интернет-магазин <a href=https://www.wildberries.ru/>Wildberries</a> – это место, где доступные цены и широкий ассортимент сочетаются в идеальной гармонии. В онлайн-каталоге Wildberries около 300 000 ведущих брендов и множество разнообразных товаров.
Wildberries – это не просто интернет-магазин, это место, где можно найти всё, что вам нужно, исследуя огромное разнообразие товаров и наслаждаясь выгодными ценами. Вайлдберрис - надежный партнер в мире онлайн-шопинга и всегда готов удовлетворить Ваши потребности. Покупайте в Wildberries – магазине доступных цен и бесконечного выбора!

3 EverettGox  
0
<center><b>Новые образы актрисы | New images of the actress</b>


<img src="https://i.imgur.com/BukhTe7.jpg">


<b>Сайт | Website:</b> https://olgafadeeva.info

</center>

2 Kevinsar  
0
Hello dear friend, I would like to offer placement of your link (or links) on different platforms of the internet such as: forums, blogs, comments and much more. . .

Increase your Visibility Boost Your Seo Rank - Get Organic Traffic From Google. Ranking in Google isn’t hard. All you need is a healthy number of backlinks from referring domains that have authority and trust in Google’s eyes.

This Backlinks Service Benefits:

1. Easily get Google rankings

2. Get a lot of traffic from Google

3. You can earn from the website in different ways

4. Increase Domain Authority (DA)

Quality guaranteed !

PRICE - 10$

WebSite - http://traffic-for-your.site/

1 Matmido  
0
Comprar Cialis En Mano http://cialiorder.com - online cialis Kamagra Oral Jelly Frankfurt Gnc Natural Viagra Isotretinoin usa price quick shipping

Имя *:
Email *:
Код *:
Copyright Neusro&ScorpDark © 2024
Сделать бесплатный сайт с uCoz