|
참고만 하세요..
이메일은 아이디@도메인으로 구성되어있쟎아요
도메인을 가지고 mx 레코드를 참조하여 smtp 주소를 알아냅니다.
그후 그 smtp 주소의 25번 포트로 접속을 하여 메일을 보냅니다.
공개 SMTP 라는게 무슨뜻인지는 모르겠구요
모든 메일은 보내는 사람의 아이피가 해당 smtp 서버에 접근거부 되어있지않으면
정상적으로 전달됩니다.
윈 2000 환경을 쓰신다면 간단히 telnet 으로 메일을 보낼 수 있습니다.
명령프롬프트에서
nslookup 엔터
>set q=mx
>도메인
이렇게 치시면 mailserver 의 주소가 등록된게 보이실 겁니다.
그 주소의 25번 포트로 접속을 하여 직접 메일을 보낼 수 있습니다.
(참고로 메일을 보낼때 mailfrom: 옆에 보내는 사람 메일주소를 적을때 '<' 로 열고 닫히지 않았을경우 메일이 거부되는 smtp 도 있습니다.)
하안인 님이 쓰신 글 :
: 서비스 업체마다 smtp설정이
:
:
: 인터넷 접속업체별 smtp서버
:
:
:
: - 한국통신(KORNET) : mail.kornet.net(전용선 사용자)
:
: soback.kornet21.net(Shell+PPP 가입자)
:
: kornet.net(PPP 가입자)
:
:
:
: - 하나로통신 : mail.hananet.net
:
:
:
: - 두루넷 : smtp.korea.com
:
:
:
:
: - 경기넷 : mail.kg21.net
:
: - 나우누리(NOWNURI) : mail.nownuri.net
:
:
: - 넷츠고(NETSGO) : netsgo.com
:
: - 미래텔(MIRAETEL) : miraetel.kornet.nm.kr
:
: - 신비로(SHINBIRO) : mail.shinbiro.com
:
:
: - 아이넷(INET) : mail.nuri.net
:
:
: - 아이프리(IFREE) : mail.ifree.net
:
:
: - 에듀넷(EDUNET) : edunet.nmc.nm.kr
:
: - 엘림넷(ELIMNET) : elim.net
:
:
: - 유니텔(UNITEL) : 203.241.132.90
:
:
: - 인터피아 : pop3.interpia.net
:
: - 채널아이(CHANNELI) : mail.channeli.net
:
:
: - 천리안(CHOLLIAN) : mail.chollian.net
:
:
: - 키스코(KISCO) : 203.233.144.1
:
:
: - 하이텔(HITEL) : smtp.hitel.net
:
:
:
:
: 공개 SMTP 서비스 주소(LAN 환경 이용자)
:
: - 211.40.177.184
:
: - 203.252.32.3
:
: - 211.45.135.11
:
: 위와 같다고 하는데 저는 ADSL을 사용해서 smtp host를 ppp.kornet.net으로 설정하니깐
: korea.com으로는 메일이 가는데 hanmail.net와 empal.com으로는 메일이 가지 않습니다.
: 9월5일이전에는 메일이 정상적으로 같는데...
:
: 위의 공개 smtp서비스를 사용하여 연결은 되는데 메일을 보내려고하면
: 보내는 주소를 검색하는지 찾을수 없다는 메시지가 나옵니다.
:
: 설정시 변경해야 하는지요.
: 제 프로그램소스는 다음과 같습니다.
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include <stdio.h>
:
: #include "main.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
: conn = false;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: NMSMTP1->Host = Edit1->Text;
: NMSMTP1->Port = 25;
: NMSMTP1->UserID = Edit2->Text;
: NMSMTP1->Connect();
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
: if (NMSMTP1->Connected)
: NMSMTP1->Disconnect();
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button4Click(TObject *Sender)
: {
: if (OpenDialog1->Execute())
: ListBox1->Items->Add(OpenDialog1->FileName);
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button5Click(TObject *Sender)
: {
: ListBox1->Items->Delete(ListBox1->ItemIndex);
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button6Click(TObject *Sender)
: {
: NMSMTP1->PostMessage->FromAddress = Edit4->Text;
: NMSMTP1->PostMessage->FromName = Edit5->Text;
: NMSMTP1->PostMessage->Subject = Edit10->Text;
: NMSMTP1->PostMessage->ToAddress->Add(Edit7->Text);
: NMSMTP1->PostMessage->ToBlindCarbonCopy->Add(Edit9->Text);
: NMSMTP1->PostMessage->ToCarbonCopy->Add(Edit8->Text);
: NMSMTP1->PostMessage->Attachments->AddStrings(ListBox1->Items);
: NMSMTP1->PostMessage->Body->Assign(Memo1->Lines);
: NMSMTP1->SendMail();
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
: if (NMSMTP1->Verify(Edit3->Text))
: ShowMessage(Edit3->Text+" exists");
: else
: ShowMessage(Edit3->Text+" not verified");
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button7Click(TObject *Sender)
: {
: NMSMTP1->ExpandList(Edit11->Text);
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
: {
: StatusBar1->SimpleText = "Connected";
: conn = true;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1ConnectionFailed(TObject *Sender)
: {
: ShowMessage("Connection Failed");
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1ConnectionRequired(bool &Handled)
: {
: AnsiString BoxCaption;
: AnsiString BoxMsg;
: BoxCaption = "Connection Required";
: BoxMsg = "Connection Required. Connect?";
: if (MessageBox(0, &BoxMsg[1], &BoxCaption[1], MB_YESNO + MB_ICONEXCLAMATION) == IDYES)
: {
: Handled = TRUE;
: Button1Click(this);
: }
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1Disconnect(TObject *Sender)
: {
: if (StatusBar1 != 0)
: StatusBar1->SimpleText = "Disconnected";
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1EncodeEnd(AnsiString Filename)
: {
: StatusBar1->SimpleText = "Encoding "+Filename;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1EncodeStart(AnsiString Filename)
: {
: StatusBar1->SimpleText = "Decoding "+Filename;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1Failure(TObject *Sender)
: {
: ShowMessage("Operation Failed");
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1HostResolved(TComponent *Sender)
: {
: StatusBar1->SimpleText = "Host Resolved";
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1InvalidHost(bool &Handled)
: {
: AnsiString NewHost;
: if (InputQuery("Invalid Host", "Please Choose another host", NewHost))
: {
: //ShowMessage(NewHost);
: NMSMTP1->Host = NewHost;
: Handled = true;
: }
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1MailListReturn(AnsiString MailAddress)
: {
: Memo2->Lines->Add(MailAddress);
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1PacketSent(TObject *Sender)
: {
: StatusBar1->SimpleText = IntToStr(NMSMTP1->BytesSent)+" bytes of "+IntToStr(NMSMTP1->BytesTotal)+" sent";
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1RecipientNotFound(AnsiString Recipient)
: {
: ShowMessage(Recipient+" not found");
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1SendStart(TObject *Sender)
: {
: StatusBar1->SimpleText = "Sending message";
: sendok = true;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1Status(TComponent *Sender,
: AnsiString Status)
: {
: if (StatusBar1 != 0)
: StatusBar1->SimpleText = Status;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::NMSMTP1Success(TObject *Sender)
: {
: StatusBar1->SimpleText = "Message Sent";
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button8Click(TObject *Sender)
: {
: TDateTime dt1,dt2;
: dt2 = Now();
: Word Year,Month,Day;
: int k,i;
: FILE *fp;
: String Fname,str;
: char ek[3],td[9],yd[9],*ptr,buf[512],mm[51];
: bool sok;
:
: DecodeDate(dt2, Year,Month, Day);
: wsprintf(td,"%04d%02d%02d",Year,Month,Day);
:
: if(dt2.DayOfWeek() == 2)
: dt1 = dt2-3;
: else
: dt1 = dt2-1;
: DecodeDate(dt1, Year,Month, Day);
: wsprintf(yd,"%04d%02d%02d",Year,Month,Day);
:
:
: StatusBar1->SimpleText = "변환중. 잠시만";
: for (k = 0; k < ListBox2->Items->Count; k++)
: {
: strcpy(buf,ListBox2->Items->Strings[k].c_str());
: ptr = strchr(buf,';');
: if(!ptr)
: continue;
: i = ptr - buf;
: strncpy(mm,buf,i); mm[i] = '\0';
:
: Fname = String("MTxt\\")+String(mm)+String(td)+String(".txt");
: fp = fopen(Fname.c_str(),"wt");
: Gnb->Close();
: Gnb->SQL->Clear();
: str = String("select * from mstat where filename = '")+String(mm)+\
: String("' and ( (today='")+String(yd)+String("' and mtime >'0900') or today='")+\
: String(td)+String("') order by wonname,today,mtime");
:
: Gnb->SQL->Add(str.c_str());
: Gnb->Open();
: fprintf(fp," 날자 원명 , 이름, 전화번호, 시간, 결과, 전화건시간, 받은시간, 종료시간,SE,S\n");
: while(!Gnb->Eof)
: {
: sok = Gnb->FieldByName("studyok")->AsBoolean;
: strcpy(ek,Gnb->FieldByName("exitkey")->AsString.c_str());
: if(sok)
: fprintf(fp,"%10s%20s,%10s,%14s,%6s,%8s,%10s,%10s,%10s,%2s,1\n",\
: Gnb->FieldByName("today")->AsString.c_str(),\
: Gnb->FieldByName("wonname")->AsString.c_str(),Gnb->FieldByName("name")->AsString.c_str(),\
: Gnb->FieldByName("tel")->AsString.c_str(),Gnb->FieldByName("mtime")->AsString.c_str(),\
: Gnb->FieldByName("log")->AsString.c_str(),Gnb->FieldByName("dial_time")->AsString.c_str(),\
: Gnb->FieldByName("con_time")->AsString.c_str(),Gnb->FieldByName("dis_time")->AsString.c_str(),\
: Gnb->FieldByName("exitkey")->AsString.c_str());
: else
: fprintf(fp,"%10s%20s,%10s,%14s,%6s,%8s,%10s,%10s,%10s,%2s,0\n",\
: Gnb->FieldByName("today")->AsString.c_str(),\
: Gnb->FieldByName("wonname")->AsString.c_str(),Gnb->FieldByName("name")->AsString.c_str(),\
: Gnb->FieldByName("tel")->AsString.c_str(),Gnb->FieldByName("mtime")->AsString.c_str(),\
: Gnb->FieldByName("log")->AsString.c_str(),Gnb->FieldByName("dial_time")->AsString.c_str(),\
: Gnb->FieldByName("con_time")->AsString.c_str(),Gnb->FieldByName("dis_time")->AsString.c_str(),\
: Gnb->FieldByName("exitkey")->AsString.c_str());
: Gnb->Next();
: }
: Gnb->Close();
: fclose(fp);
: }
: StatusBar1->SimpleText="변환작업 종료";
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button9Click(TObject *Sender)
: {
: ListBox2->Items->SaveToFile("gnb전자우편.txt");
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::ListBox2Click(TObject *Sender)
: {
: int k;
: String str;
: TDateTime dt;
: dt = Now();
: Word Year,Month,Day;
: char yd[9],*ptr,buf[512],mm[51],won[50];
: int i;
: bool sok;
:
: DecodeDate(dt, Year,Month, Day);
: wsprintf(yd,"%04d%02d%02d",Year,Month,Day);
:
: sendok = false;
:
: for (k = 0; k < ListBox2->Items->Count; k++)
: {
: if (ListBox2->Selected[k])
: {
: strcpy(buf,ListBox2->Items->Strings[k].c_str());
:
: ptr = strchr(buf,';');
: if(!ptr)
: continue;
:
: i = ptr - buf;
: strncpy(won,buf,i); won[i] = '\0';
: strcpy(buf,buf+i+1);
:
: ptr = strchr(buf,';');
: if(!ptr)
: continue;
: RR:
: i = ptr - buf;
: strncpy(mm,buf,i); mm[i] = '\0';
:
: strcpy(buf,buf+i+1);
:
: Edit7->Text = String(mm);
: Edit10->Text = String("결과자료입니다.");
: str = String("c:\\프로그램\\메일\\mtxt\\")+String(won)+\
: String(yd)+String(".txt");
: ListBox1->Clear();
: ListBox1->Items->Add(str);
: Button6Click(this);
:
: while(!sendok)
: Sleep(1000);
: sendok = false;
:
: Sleep(3000);
: ptr = strchr(buf,';');
: if(ptr)
: goto RR;
:
: }
: }
: StatusBar1->SimpleText="보내기완료";
: }
: //---------------------------------------------------------------------------
:
:
:
:
: void __fastcall TForm1::FormActivate(TObject *Sender)
: {
: ListBox2->Items->Clear();
: ListBox2->Items->LoadFromFile("gnb전자우편.txt");
:
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button10Click(TObject *Sender)
: {
: int k;
: String str;
: TDateTime dt;
: dt = Now();
: Word Year,Month,Day;
: char yd[9],*ptr,buf[512],mm[51],won[50];
: int i;
: bool sok;
:
: DecodeDate(dt, Year,Month, Day);
: wsprintf(yd,"%04d%02d%02d",Year,Month,Day);
:
: sendok = false;
:
: for (k = 0; k < ListBox2->Items->Count; k++)
: {
: strcpy(buf,ListBox2->Items->Strings[k].c_str());
:
: ptr = strchr(buf,';');
: if(!ptr)
: continue;
:
: i = ptr - buf;
: strncpy(won,buf,i); won[i] = '\0';
: strcpy(buf,buf+i+1);
:
: ptr = strchr(buf,';');
: if(!ptr)
: continue;
: RR:
: i = ptr - buf;
: strncpy(mm,buf,i); mm[i] = '\0';
:
: strcpy(buf,buf+i+1);
:
: Edit7->Text = String(mm);
: Edit10->Text = String("결과자료입니다.");
: str = String("c:\\프로그램\\메일\\mtxt\\")+String(won)+\
: String(yd)+String(".txt");
: ListBox1->Clear();
: ListBox1->Items->Add(str);
: Button6Click(this);
:
: while(!sendok)
: Sleep(1000);
: sendok = false;
:
: Sleep(3000);
: ptr = strchr(buf,';');
: if(ptr)
: goto RR;
:
: StatusBar1->SimpleText=String(mm)+ String(" 보내기완료");
:
: }
:
: StatusBar1->SimpleText="모두 완료";
:
: }
: //---------------------------------------------------------------------------
:
:
:
|