{************************************************* * *****************************
Ce processus est utilisé pour obtenir le nom du serveur de destination de livraison express et le numéro de priorité. Le paramètre AMXList est utilisé pour recevoir la valeur du résultat qui représente le nom de domaine transmis sur ****************. ********* **************************************** ********** **********}
procédure TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: string);
var
je : entier ;
commencer
avec IdDNSResolver faire
commencer
Host := 202.102.13.141 ; { L'attribut Host est utilisé pour spécifier l'adresse du serveur de noms de domaine. Il s'agit de l'adresse du serveur de noms de domaine principal où se trouve l'auteur. Vous pouvez également spécifier n'importe quelle adresse de serveur de noms de domaine sur Internet. est rapidement accessible. Vous devez savoir où vous êtes. L'adresse du serveur de noms de domaine peut être trouvée via la commande winipcfg sous win98 et via ipconfig /all sous win2000. }
ReceiverTimeout := 10000; // Si aucun retour du serveur de noms de domaine n'est obtenu dans le délai spécifié, cela est considéré comme un échec.
ClearVars; // Efface les enregistrements de ressources renvoyés par la requête précédente
{Construire la structure d'en-tête de cette requête}
avec DNSHeader faire
commencer
Qr := False; // False représente la requête Opcode := 0; // 0 représente la requête de nom de domaine standard RD := True; //Le serveur de noms de domaine peut effectuer des requêtes récursives QDCount := 1; les requêtes se terminent ;
{Construisez la question à interroger}
DNSQDList.Clear ;
avec DNSQDList.Add do
commencer
QName := AQName; //Le nom de domaine à interroger QType := cMX; //QTYPE spécifie le type d'enregistrement de ressource à interroger. La valeur cMX représente l'enregistrement d'échange de courrier QClass := cIN;
fin;
ResolveDNS ; //Envoyer une requête au serveur de noms de domaine
{Recevez le résultat des commentaires du serveur de noms de domaine et placez le nom du serveur de messagerie de commentaires dans la partie Nom de la liste AMXList.
Le numéro de priorité du serveur de messagerie est placé dans la section Valeur. }
pour i := 0 à DNSAnList.Count - 1 faire
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
fin;
fin;
{Envoyer un e-mail de livraison lorsque le bouton "Envoyer" est cliqué}
procédure TQuickEMailFrm.btnSendClick(Expéditeur : TObject);
var
MxList : TStringList ;
je : entier ;
QName, ThoughAddress : chaîne ;
commencer
//Créer un email basé sur le contenu renseigné par l'utilisateur avec IdMsgSend do
commencer
Body.Assign(mmContent.Lines); //Texte de l'e-mail From.Address := Trim(edtFrom.Text); //Adresse de l'expéditeur Recipients.EMailAddresses := Trim(edtTo.Text); //Adresse du destinataire Sujet := edtSubject. Texte ; //Fin du sujet de l'e-mail ;
//Obtenez le nom de domaine de messagerie à partir de l'adresse du destinataire saisie et utilisez le processus GetMxList précédent pour obtenir l'adresse de destination QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, length(edtTo. Texte) )));
MxList := TStringList.Create;
essayer
GetMxList(MxList, QName);
ThoughAddress := MxList.Names[0];
{Le premier serveur avec commentaires est pris comme destination. Les lecteurs peuvent apporter des améliorations en fonction des besoins réels, par exemple en prenant en compte la priorité du courrier ou lorsque le serveur que vous choisissez est temporairement incapable de traiter votre courrier en raison de l'occupation, essayez d'utiliser un autre serveur. . essayer}
enfin
MxList.Free;
fin;
//Envoyer un email avec IdSMTP do
commencer
Host := ThoughAddress; // Attribue l'hôte comme destination. C'est la différence entre le courrier express et le courrier ordinaire. Port := 25; // Le port par défaut du service smtp est 25.
Connecter ; //Connectez-vous au serveur, essayez
Send(IdMsgSend); //Envoyer l'e-mail qui vient d'être créé ShowMessage(Sentcompleted //Invite enfin une fois l'envoi terminé);
Déconnecter ; //Déconnecter l'extrémité du serveur ;
fin;
fin;