{************************************************ * *****************************
このプロセスは、メール エクスプレス配信の宛先サーバー名と優先順位番号を取得するために使用され、パラメータ AQName は、渡されたドメイン名を表します**************。 ********* **************************************** ********** ***********}
プロシージャ TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: string);
変数
i: 整数。
始める
IdDNSResolver を使用して行う
始める
Host := 202.102.13.141 ; { Host 属性は、作成者が存在するメインのドメイン ネーム サーバーのアドレスを指定するために使用されます。ドメイン ネーム サーバーのアドレスは、win98 では winipcfg コマンドを使用して、win2000 では ipconfig /all を使用して見つけることができます。 }
ReceiveTimeout := 10000; // 指定した時間内にドメインネームサーバーからのフィードバックが得られなかった場合は失敗とみなされます。
ClearVars; // 前のクエリによって返されたリソース レコードをクリアします。
{このクエリのヘッダー構造を構築する}
DNSHeaderを使用して行う
始める
Qr := False; // False はクエリを表します Opcode := 0; // 0 は標準のドメイン名クエリを表します RD := True; // ドメイン ネーム サーバーは再帰クエリを実行できます。クエリは終了します。
{質問する質問を作成する}
DNSQDList.Clear;
DNSQDList.Add を使用して実行します
始める
QName := AQName; // クエリ対象のドメイン名 QType := cMX; // QTYPE は、クエリ対象のリソース レコードのタイプを指定します。 QClass := cIN;
終わり;
ResolveDNS; // ドメインネームサーバーにリクエストを送信します。
{ドメイン ネーム サーバーからフィードバック結果を受信し、フィードバック メール サーバー名を AMXList リストの名前部分に入力します。
メールサーバーの優先順位番号は、「値」セクションに配置されます。 }
for i := 0 から DNSAnList.Count - 1 まで
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
終わり;
終わり;
{「送信」ボタンをクリックすると配信メールを送信}
プロシージャ TQuickEMailFrm.btnSendClick(送信者: TObject);
変数
MxList: TStringList;
i: 整数。
QName、ThoughAddress: 文字列;
始める
//ユーザーが IdMsgSend で入力した内容に基づいてメールを作成します。
始める
Body.Assign(mmContent.Lines); //メールのテキスト From.Address := Trim(edtFrom.Text); // 送信者のアドレス Recipients.EMailAddresses := Trim(edtTo.Text); // 受信者のアドレス Subject := edtSubject.テキスト; //電子メールの件名終わり;
//入力された受信者アドレスから電子メール ドメイン名を取得し、前の GetMxList プロセスを使用して宛先アドレスを取得します。 QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, Length(edtTo.文章) )));
MxList := TStringList.Create;
試す
GetMxList(MxList, QName);
ただしアドレス := MxList.Names[0];
{フィードバックのある最初のサーバーが送信先として使用されます。読者は、メールの優先順位を考慮したり、選択したサーバーが混雑により一時的にメールを処理できない場合に、別のサーバーを使用してみるなど、実際のニーズに応じて改善できます。 。 試す}
ついに
MxList.Free;
終わり;
//IdSMTP を使用してメールを送信します。
始める
Host := ThoughAddress; // これは、高速メールと通常のメールの違いです。 // SMTP サービスのデフォルトのポートは 25 です。
Connect; // サーバーに接続してみます
Send(IdMsgSend); //作成したメールを送信します。 ShowMessage(Sent completed) //送信完了後にメッセージを表示します。
切断; // サーバー側を切断します。
終わり;
終わり;