날씨가 많이 추워졌네요...
요새 메일 발송땜시 죽을 맛입니다.
여기서 메일에 대한 검색을 하다가 질문 드립니다.
인디를 이용해서 메일을 발송하고 있습니다.
현재 네이트를 테스트 하고 있는데요.
제가 저의 메일로 메일을 발송하면 정상적으로 메일이 들어 옵니다.
그리고 며칠전에는 네띠앙, 한메일의 제 메일로 전송을 했더니 정상적으로 도착을 했더군요.
그런데, 어제부터였나?? 네이트에서 네이트는 전송이 되는데, 네이트에서 네띠앙, 한메일로는
발송이 안되네요..
아래는 소스입니다.
<!--CodeS-->
if FThreadList = nil then
FThreadList := TList.Create ;
URL :=(URL);
URL :='<br><br><br><br><font size=2 color=#00F96F72><A href=''' + URL + '''>' + ' 다운로드 받기</a></font>';
s_Server := 'smtp.' + Copy(edt_sendername.Text, pos('@',edt_sendername.Text) + 1,
Length(edt_sendername.Text) - pos('@',edt_sendername.Text) + 1);
dxButton6.Enabled := False;
For i:=0 to FMailListCount - 1 do
begin
FThreadList.add(TSMTPThread.Create);
with TSMTPThread(FThreadList.Items[i]) do
begin
FIndex := i;
FreeOnTerminate := True;
OnTerminate := ThreadTerminated;
FFrom := Trim(edt_sendername.Text);
FMessage := mo_text.Lines.Text + URL;
FRecipient := Trim(edt_recive.Text);
FSubject := Trim(edt_subject.Text);
FSMTPServer := Trim(s_Server);
FAuthenticationType := atLogin;
FUserid := Copy(edt_sendername.Text, 1, Pos('@',edt_sendername.Text) - 1);
FPassword := Pass_Word;
end;
end;
For i:=0 to FMailListCount do begin
TSMTPThread(FThreadList.Items[i]).Start;
end;
<!--CodeE-->
아래 부분은 발송 부분입니다.
<!--CodeS-->
procedure TSMTPThread.Run;
var
LMsg: TIdMessage;
begin
LMsg := TIdMessage.Create(nil);
try
with LMsg do
begin
From.Address := FFrom;
Recipients.Add.Address := FRecipient;
Subject := FSubject;
Body.Text := FMessage;
CharSet := 'KS_C_5601-1987';
Headers.Text := 'Content-type: text/html';
ContentType := 'text/html';
end;
with TIdSMTP.Create(nil) do
begin
try
Host := FSMTPServer;
AuthenticationType := FAuthenticationType;
Password := FPassword;
Username := FUserID;
Connect;
try
Send(LMsg);
finally
Disconnect;
end;
finally
Free;
end;
end;
finally
LMsg.Free;
end;
Stop;
end;
<!--CodeE-->
대체 이유를 모르겠습니다. 고수님들 문제가 뭔지 부탁드리겠습니다.
P.S : 사무실에는 메일 서버가 있지만...납품되는곳은 메일 서버가 따로 없기에
사용자의 메일을 이용해서 인증을 받아 메일 발송을 하게 하고자 합니다. 방법이 없네요..ㅠㅠ
질문시 빠진부분이 있네요..^^;;;
<!--CodeS-->
procedure TfrmSendMail.ThreadTerminated(ASender: TObject);
var
s: string;
p: Pointer;
nIndex : Integer;
DownList : TStringList;
i : Integer;
User_ID_Result : String;
begin
p := TSMTPThread(ASender);
nIndex := TSMTPThread(ASender).FIndex ;
s := TIdThread(ASender).TerminatingException;
if Length(s) > 0 then
begin
Memo1.Lines.add(IntToStr(nIndex) + ' : ' + IntToStr(TIdThread(ASender).ThreadID)
+ 'An error occurred while sending message. ' + s);
Application.MessageBox('메일 발송에 실패 하였습니다.' + #13 + '다시 시도해 보시기 바랍니다.','DreamHard',MB_ICONWARNING + MB_OK);
dxButton6.Enabled := True;
end
else
begin
Memo1.Lines.add(IntToStr(nIndex) + ' : ' + IntToStr(TIdThread(ASender).ThreadID) + ' : Message sent!');
FThreadList.Delete(FThreadList.IndexOf(p));
Application.MessageBox('메일이 성공적으로 발송되었습니다.','DreamHard',MB_ICONINFORMATION + MB_OK);
end;
dxButton6.Enabled := True;
end;
<!--CodeE-->
메일 발송 확인 부분입니다.^^;;
으음.. 제가 보기엔 소스상에는 아무런 문제가 없는 것 같아요..
뭔가 이상하다..싶어 네이트에서 한메일로 직접 메일을 보내니 메일이
보내지지 않는군요.. 아무래도.. 네이트 자체적인 문제 같은 생각이..
오늘 날씨가 많이 추워졌네요- 감기 조심하세요 ^^