{************************************************ * *******************************
Este proceso se utiliza para obtener el nombre del servidor de destino de entrega urgente y el número de prioridad. El parámetro AMXList se utiliza para recibir el valor del resultado que representa el nombre de dominio pasado***************. ********* ******************************************* ********** **********}
procedimiento TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: cadena);
var
i: Entero;
comenzar
con IdDNSResolver hacer
comenzar
Host := 202.102.13.141 ; { El atributo Host se utiliza para especificar la dirección del servidor de nombres de dominio. Esta es la dirección del servidor de nombres de dominio principal donde se encuentra el autor. También puede especificar cualquier dirección del servidor de nombres de dominio en Internet. Se puede acceder rápidamente. Debe saber dónde se encuentra. La dirección del servidor de nombres de dominio se puede encontrar mediante el comando winipcfg en win98 y mediante ipconfig /all en win2000. }
RecibirTimeout := 10000; // Si no se obtiene respuesta del servidor de nombres de dominio dentro del tiempo especificado, se considera una falla.
ClearVars; // Borra los registros de recursos devueltos por la consulta anterior.
{Construir la estructura del encabezado de esta consulta}
con DNSHeader hacer
comenzar
Qr := False; // False representa la consulta Opcode := 0; // 0 representa la consulta de nombre de dominio estándar RD := True; // El servidor de nombres de dominio puede realizar consultas recursivas QDCount := 1; las consultas terminan;
{Construya la pregunta a consultar}
DNSQDList.Borrar;
con DNSQDList.Agregar do
comenzar
QName := AQName; //El nombre de dominio que se consultará QType := cMX; //QTYPE especifica el tipo de registro de recursos que se consultará. El valor cMX representa el registro de intercambio de correo QClass := cIN;
fin;
ResolveDNS; //Enviar una solicitud al servidor de nombres de dominio.
{Reciba el resultado de los comentarios del servidor de nombres de dominio y coloque el nombre del servidor de correo de comentarios en la parte Nombre de la lista AXList.
El número de prioridad del servidor de correo se coloca en la sección Valor. }
para i := 0 a DNSAnList.Count - 1 hacer
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
fin;
fin;
{Enviar correo electrónico de entrega cuando se hace clic en el botón "Enviar"}
procedimiento TQuickEMailFrm.btnSendClick(Remitente: TObject);
var
ListaMx: TStringList;
i: Entero;
QName, AunqueAddress: cadena;
comenzar
//Crea un correo electrónico basado en el contenido completado por el usuario con IdMsgSend do
comenzar
Body.Assign(mmContent.Lines); //Texto del correo electrónico From.Address := Trim(edtFrom.Text); //Dirección del remitente Recipients.EMailAddresses := Trim(edtTo.Text); //Dirección del destinatario Asunto := edtSubject. Texto; //Final del asunto del correo electrónico;
//Obtenga el nombre de dominio de correo electrónico de la dirección del destinatario ingresada y use el proceso GetMxList anterior para obtener la dirección de destino QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, Longitud(edtTo. Texto) )));
MxList := TStringList.Create;
intentar
GetMxList(MxList, QName);
AunqueDirección := MxList.Names[0];
{El primer servidor con comentarios se toma como destino. Los lectores pueden realizar mejoras según las necesidades reales, como considerar la prioridad del correo o cuando el servidor que elija no pueda procesar temporalmente su correo debido a que está ocupado, intente usar otro servidor. . intentar}
finalmente
MxList.Gratis;
fin;
//Enviar email con IdSMTP do
comenzar
Host := ThoughAddress; // Asigna el Host como destino. Esta es la diferencia entre el correo urgente y el correo ordinario. Puerto := 25;
Conectar; //Conectarse al servidor intenta
Send(IdMsgSend); //Enviar el correo electrónico recién creado ShowMessage(Enviado completado //Preguntar finalmente después de completar el envío);
Desconectar; //Desconectar el extremo del servidor;
fin;
fin;