{************************************************ * *****************************
Dieser Prozess wird verwendet, um den Namen und die Prioritätsnummer des E-Mail-Express-Zustellungsservers abzurufen. Der Parameter AQName stellt den übergebenen Domänennamen dar***************. ********* ***************************************** ********** **********}
Prozedur TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: string);
var
i: Ganzzahl;
beginnen
mit IdDNSResolver tun
beginnen
Host := 202.102.13.141 ; { Das Host-Attribut wird verwendet, um die Adresse des Domain-Name-Servers anzugeben, unter der sich der Autor befindet Sie müssen schnell darauf zugreifen, wo Sie sich befinden. Die Adresse des Domain-Name-Servers kann unter Win98 über den Befehl winipcfg und unter Win2000 über ipconfig /all ermittelt werden. }
ReceiveTimeout := 10000; // Wenn innerhalb der angegebenen Zeit keine Rückmeldung vom Domain Name Server eingeht, gilt dies als Fehler.
ClearVars; // Von der vorherigen Abfrage zurückgegebene Ressourcendatensätze löschen
{Konstruieren Sie die Header-Struktur dieser Abfrage}
mit DNSHeader tun
beginnen
Qr := False; // False stellt die Abfrage dar. Opcode := 0; // 0 stellt die Standard-Domänennamenabfrage dar. RD := True; Abfragen enden;
{Konstruieren Sie die abzufragende Frage}
DNSQDList.Clear;
mit DNSQDList.Add tun
beginnen
QName := AQName; //Der abzufragende Domänenname QType := cMX; //QTYPE gibt den Typ des abzufragenden Ressourcendatensatzes an. Der Wert cMX stellt den Mail-Austauschdatensatz dar. QClass := cIN;
Ende;
ResolveDNS; //Eine Anfrage an den Domain-Name-Server senden
{Empfangen Sie das Feedback-Ergebnis vom Domain-Name-Server und fügen Sie den Namen des Feedback-Mail-Servers in den Namensteil der AMXList-Liste ein.
Die Prioritätsnummer des Mailservers wird im Abschnitt „Wert“ platziert. }
for i := 0 to DNSAnList.Count - 1 do
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
Ende;
Ende;
{Liefer-E-Mail senden, wenn auf die Schaltfläche „Senden“ geklickt wird}
procedure TQuickEMailFrm.btnSendClick(Sender: TObject);
var
MxList: TStringList;
i: Ganzzahl;
QName, ThoughAddress: string;
beginnen
//Erstelle eine E-Mail basierend auf dem Inhalt, den der Benutzer mit IdMsgSend do ausgefüllt hat
beginnen
Body.Assign(mmContent.Lines); //E-Mail-Text From.Address := Trim(edtFrom.Text); //Absenderadresse Recipients.EMailAddresses := Trim(edtTo.Text); //Empfängeradresse Subject := edtSubject. Text; //E-Mail-Betreff Ende;
//Den E-Mail-Domänennamen von der eingegebenen Empfängeradresse abrufen und den vorherigen GetMxList-Prozess verwenden, um die Zieladresse abzurufen QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, Length(edtTo. Text) )));
MxList := TStringList.Create;
versuchen
GetMxList(MxList, QName);
ThoughAddress := MxList.Names[0];
{Der erste Server mit Feedback wird als Ziel verwendet. Leser können je nach tatsächlichem Bedarf Verbesserungen vornehmen, z. B. unter Berücksichtigung der Priorität der E-Mails, oder wenn der von Ihnen ausgewählte Server Ihre E-Mails aufgrund von Auslastung vorübergehend nicht verarbeiten kann, versuchen Sie es mit einem anderen Server . versuchen}
Endlich
MxList.Free;
Ende;
//E-Mail mit IdSMTP senden do
beginnen
Host := ThoughAddress; // Host als Ziel zuweisen. Dies ist der Unterschied zwischen Express-Mail und gewöhnlichem Mail. Port := 25;
Connect; //Verbinde dich mit dem Server
Send(IdMsgSend); //Senden Sie die gerade erstellte E-Mail. ShowMessage(Sent abgeschlossen); //Prompt abschließend, nachdem der Versand abgeschlossen ist
Disconnect; //Verbindung zum Server trennen;
Ende;
Ende;