В моей практике мне приходится работать с почтой, я не пытаюсь написать
свой почтовик, т.к. уже устоялась практика работы в TheBat!. Но почту
становиться все сложнее обрабатывать вручную и приходится
изворачиваться, писать "надстройки” над TheBat,
поскольку разработчики не могут встроить плагины. Ну да ладно, это их
проблемы, а у нас другие задачи, с которыми мы справимся на ура
используя библиотеку Synapse.
Раньше я работал с Indy, впечатление честно сказать не очень, много
проблем с кодировками и еще куча багов, уже и не помню. Представляю
вашему вниманию бесплатную библиотеку Synapse,
библиотека предназначена для работы с TCP/IP и распростроняется
бесплатно, содержит в архиве исходные коды. На момент написания статьи
существовал стабильный 39 релиз.
Установка очень проста, распакуйте архив и добавьте путь в Library
path:
Tools –
Environment options (закладка Library) – Directories.
Все, теперь вручную включайте в свой проект нужные вам модули. Пока, в
своей практике, я использую модули для работы с почтовыми заголовками.
Итак, приступим. Включите в проект mimemessи synachar,
первый модуль позволяет работать с заголовками почтового сообщения,
второй модуль содержит кодировки заголовков. Очень богатый набор,
позволяет без труда работать с разными кодировками.
uses
… mimemess, synachar.
Предлогаю написать программу, которая позволит создать файл письма
формата RFC822. Обший
вид программы.
Для того что бы прикреплять файлы к письму, добавим следующую процедуру
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; Установим
кодировку заголовков, полный список поддерживаемых кодировок
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); Добавляем текст письма, для этих
целей существует несколько функций:
mMes.EncodeMessage; - раскодируем сообщение, эту нужно делать перед тем
как хотите сохранить сообщение.
mMes.Lines.SaveToFile('c:\TestFile.msg'); - сохраняем файл.
Теперь созданное письмо можно загрузить в TheBat и отправить. Я делаю
это так
cd:=Путь к TheBat + ' /IMPORTU="'+Название
ящика+'";FOLDER="Outbox";IN='+путь где находится файл+'*.MSG;W;R'
WinExec(PAnsiChar(cd), SW_SHOW);
Таким образом можно организовать генерацию и отправку писем. У меня
таким образом генерируются и отправляются поздравления.
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
Интернет-магазин <a href=https://www.wildberries.ru/>Wildberries</a> – это место, где доступные цены и широкий ассортимент сочетаются в идеальной гармонии. В онлайн-каталоге Wildberries около 300 000 ведущих брендов и множество разнообразных товаров. Wildberries – это не просто интернет-магазин, это место, где можно найти всё, что вам нужно, исследуя огромное разнообразие товаров и наслаждаясь выгодными ценами. Вайлдберрис - надежный партнер в мире онлайн-шопинга и всегда готов удовлетворить Ваши потребности. Покупайте в Wildberries – магазине доступных цен и бесконечного выбора!
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