{************************************************ * *****************************
Этот процесс используется для получения имени сервера назначения экспресс-доставки и номера приоритета. Параметр AMXList используется для получения значения результата AQName, представляющего переданное имя домена***************. ********* ***************************************** ********** **********}
процедура TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: строка);
вар
я: целое число;
начинать
с IdDNSResolver сделайте
начинать
Host := 202.102.13.141 ; { Атрибут Host используется для указания адреса сервера доменных имен. Это основной адрес сервера доменных имен, на котором находится автор. Вы также можете указать любой адрес сервера доменных имен в Интернете. можно быстро получить доступ. Вы должны знать, где вы находитесь. Адрес сервера доменных имен можно найти с помощью команды winipcfg в Win98 и через ipconfig /all в Win2000. }
ReceiveTimeout := 10000; // Если в течение указанного времени не получен ответ от сервера доменных имен, это считается сбоем.
ClearVars // Очистка записей ресурсов, возвращенных предыдущим запросом;
{Постройте структуру заголовка этого запроса}
с DNSHeader сделать
начинать
Qr := False; // False представляет код операции := 0; // 0 представляет стандартный запрос доменного имени RD := True; // Сервер доменных имен может выполнять рекурсивные запросы QDCount := 1; запросы заканчиваются;
{Составьте вопрос, который будет запрошен}
DNSQDList.Очистить;
с DNSQDList.Add сделать
начинать
QName := AQName; //Имя домена, которое будет запрошено QType := cMX; //QTYPE указывает тип запрашиваемой записи ресурса. Значение cMX представляет запись обмена почтой QClass := cIN;
конец;
ResolveDNS; //Отправляем запрос на сервер доменных имен;
{Получите результат обратной связи от сервера доменных имен и поместите имя почтового сервера обратной связи в часть «Имя» списка AMXList.
В разделе «Значение» размещается приоритетный номер почтового сервера. }
для i := 0 до DNSAnList.Count - 1 сделать
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
конец;
конец;
{Отправлять электронное письмо с доставкой при нажатии кнопки «Отправить»}
процедура TQuickEMailFrm.btnSendClick(Отправитель: TObject);
вар
Мкслист: ТСтринглист;
я: целое число;
QName, ХотяАдрес: строка;
начинать
//Создаем электронное письмо на основе содержимого, заполненного пользователем с помощью IdMsgSend do
начинать
Body.Assign(mmContent.Lines); //Текст электронного письма From.Address := Trim(edtFrom.Text); //Адрес отправителя Recipients.EMailAddresses := Trim(edtTo.Text); //Адрес получателя := edtSubject. Текст // Конец темы письма;
//Получите имя домена электронной почты из введенного адреса получателя и используйте предыдущий процесс GetMxList, чтобы получить адрес назначения QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, Длина(edtTo. Текст) )));
MxList := TStringList.Create;
пытаться
GetMxList(MxList, QName);
ХотяАдрес:= MxList.Names[0];
{Первый сервер с отзывом принимается в качестве места назначения. Читатели могут вносить улучшения в соответствии с фактическими потребностями, например, учитывая приоритет почты или если выбранный вами сервер временно не может обрабатывать вашу почту из-за занятости, попробуйте использовать другой сервер. . пытаться}
окончательно
MxList.Бесплатно;
конец;
//Отправить электронное письмо с помощью IdSMTP do
начинать
Хост := ThoughAddress; // Назначаем хост в качестве пункта назначения. В этом разница между экспресс-почтой и обычной почтой. Порт := 25 // Порт службы smtp по умолчанию — 25;
Подключиться //Попробуем подключиться к серверу;
Send(IdMsgSend); //Отправляем только что созданное электронное письмо ShowMessage(Отправлено завершено); //Наконец, после завершения отправки;
Disconnect; //Отключаем конец сервера;
конец;
конец;