{************************************************ * *****************************
이 프로세스는 메일 속달 배달 대상 서버 이름과 우선 순위 번호를 가져오는 데 사용됩니다. AMXList 매개변수는 결과 값을 받는 데 사용됩니다**************** ********* ***************************************** ********** **********}
절차 TQuickEMailFrm.GetMxList(AMxList: TStringList; AQName: string);
var
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; //도메인 이름 서버는 재귀 쿼리를 수행할 수 있습니다. QDCount := 1; 쿼리 종료;
{질의할 질문 구성}
DNSQDList.Clear;
DNSQDList.Add do를 사용하여
시작하다
QName := AQName; //쿼리할 도메인 이름 QType := cMX; //QTYPE은 쿼리할 리소스 레코드의 유형을 지정합니다. cMX 값은 메일 교환 레코드를 나타냅니다. QClass := cIN;
끝;
ResolveDNS; //도메인 이름 서버에 요청 보내기
{도메인 네임서버로부터 피드백 결과를 받아 AMXList 목록의 Name 부분에 피드백 메일서버 이름을 입력합니다.
메일 서버의 우선순위 번호는 값 섹션에 있습니다. }
for i := 0 ~ DNSAnList.Count - 1 do
AMxList.Add(DNSAnList[i].RData.MX.Exchange + = +
IntToStr(DNSAnList[i].RData.MX.Preference));
끝;
끝;
{'보내기' 버튼을 클릭하면 배송 이메일을 보냅니다.}
절차 TQuickEMailFrm.btnSendClick(Sender: TObject);
var
MxList: TStringList;
i: 정수;
QName, ThoughAddress: 문자열;
시작하다
//IdMsgSend do를 사용하여 사용자가 입력한 내용을 기반으로 이메일을 생성합니다.
시작하다
Body.Assign(mmContent.Lines); //이메일 텍스트 From.Address := Trim(edtFrom.Text); //발신자 주소 Recipients.EMailAddresses := Trim(edtTo.Text); //수신자 주소 Subject := edtSubject. Text; //이메일 제목 끝;
//입력된 수신자 주소에서 이메일 도메인 이름을 가져오고, 이전 GetMxList 프로세스를 사용하여 대상 주소를 가져옵니다. QName := TrimRight(copy(edtTo.Text, Pos( @ , edtTo.Text) + 1, Length(edtTo. 텍스트) )));
MxList := TStringList.Create;
노력하다
GetMxList(MxList, QName);
ThoughAddress := MxList.Names[0];
{피드백이 있는 첫 번째 서버가 대상으로 사용됩니다. 메일의 우선순위를 고려하거나 선택한 서버가 사용량이 많아 메일을 일시적으로 처리할 수 없는 경우 독자는 실제 필요에 따라 개선할 수 있습니다. . 노력하다}
마지막으로
MxList.Free;
끝;
//IdSMTP로 이메일 보내기 do
시작하다
Host := ThoughAddress; // Host를 대상으로 지정합니다. Port := 25; // smtp 서비스의 기본 포트는 25입니다.
연결; //서버에 연결해 보세요.
Send(IdMsgSend); //방금 생성한 이메일을 보냅니다. ShowMessage(전송 완료) //전송이 완료되면 메시지를 표시합니다.
연결 끊기; //서버 연결을 끊습니다.
끝;
끝;