C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[58] Relay SMTP서버없이 메일 발송하기 (MX Host Query)
멀더 [mulder] 13638 읽음    2004-10-08 14:05
IdSmtpDemo.zip 9.6KB MX Host Query, Smtp Client
멀더입니다.
Q&A에도 가끔씩 올라오는 질문이어서, 시간을 내어 데모프로그램을 작성했습니다.
사실 모사이트의 Delphi예제를 BCB로 변환하였습니다.

프로그램을 설명하자면 아래의 함수가 MX Host를 Query하는 함수로 가장 중요합니다.
Internet Mail을 아시는 분이라면, MX Host가 몬지도 알겠지요. MX호스트는
실제메일을 수신하는 서버를 뜻합니다.
다음으 예를 들자면
xxx@hanmail.net 으로 메일을 보내면 실제로는
mx1.hanmail.net 부터 .. mx10.hanmail.net의 10개의 호스트
중 1개 한데 메일을 보내야 받을수 있습니다. 여기서 mx1, ... mx10 까지의 호스트를 mx host라 합니다.
즉, 메일을 Relay SMTP서버 없이 보내실려면, 먼저 MX Host를 구한후
그중 적당한 놈에게 메일을 보내시면 됩니다.

아래가 MX Host를 구하는 함수입니다...
그외는 IdSMTP 를 이용해서 메일을 보내는 일반적인 예제입니다.

//
// Desc Get MxHost
//
// Param @AMxList : mxhost = weight
// Param @AQName  : query domain
//
void __fastcall TForm1::GetMxList(TStringList* AMxList,AnsiString AQName)
{
    int i;

    IdDNSResolver->Host = edDNSSvr->Text;
    IdDNSResolver->ReceiveTimeout = 10000;
    IdDNSResolver->ClearVars();

    IdDNSResolver->DNSHeader->Qr = false;
    IdDNSResolver->DNSHeader->Opcode = 0;
    IdDNSResolver->DNSHeader->RD = true;
    IdDNSResolver->DNSHeader->QDCount = 1;

    IdDNSResolver->DNSQDList->Clear();
    TQuestionItem* ci = IdDNSResolver->DNSQDList->Add();

    ci->QName = AQName;
    ci->QType = cMX;
    ci->QClass = cIN;

    IdDNSResolver->ResolveDNS();

    for(i=0; i<IdDNSResolver->DNSAnList->Count; i++)
    {
        AMxList->Add(AnsiString(IdDNSResolver->DNSAnList->Items[i]->RData.MX.Exchange)
        + "=" + IntToStr(IdDNSResolver->DNSAnList->Items[i]->RData.MX.Preference));
    }
}

마지막으로 이런 P2P메일방송으 문제점이 있다는걸 말씀드리자면,
우리나라의 일부 대형 웹메일사이트(다음,네이버, ...)는 이런방식으로 보내시려면
한가지 고려점이 있는데,
받는서버가 보내는 서버가 실제로 메일발송 서버인지를 Check한다는 겁니다.
이걸 유의하셔서 보내셔야 문제가 발생하지 않지요...

그럼 즐플하세요.
김유미 [isaoori]   2005-03-14 10:49 X
mmlog가 없다고 하는데요

+ -

관련 글 리스트
58 Relay SMTP서버없이 메일 발송하기 (MX Host Query) 멀더 13638 2004/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.