만일 아웃룩처럼 사용자가 임의의 '보낼메일서버'를 지정하도록 한 후 자유롭게 메일을 보내는 프로그램을 만들고자 한 것이라면 TNMSMTP컴포넌트는 적당하지 않습니다.
NMSMTP컴포넌트의 프로퍼티중에서 UserID가 있습니다만(그런데 password는 없습니다)이 것은 SMTP서버의 인증을 받는 것은 아닙니다. 다만 해당 SMTP서버가 접속자의 로그를 위해 요구를 할 때 제시하기 위함이고 이것을 해당 서버의 유효한 계정으로 인식하지는 않습니다. 즉, 진짜로 인증을 받는 것이 아니라는...
그렇담 어떻게 사내에서는 메일이 전달되었을까요? 해당서버안에 받을 사람의 계정이 있었기 때문이지요. 또 외부로는 왜 않되었을까요? 해당서버안에 받을 사람의 계정이 있는 것이 아니니까 서버가 다시 어딘가로 전달해주어야 하기 때문입니다.(이것을 릴레이라 부릅니다.)
대부분의 SMTP서버는 일반적으로 릴레이를 허용하지 않도록 하고 있습니다.
릴레이란 SMTP서버가 수신한 메일이 수신한 메일서버 주소의 것이 아니라면 해당 주소로 다시 보내주는 것을 말합니다. 이것을 허용하면 스팸메일등의 악용의 소지가 있으므로 인증된 경우에만 가능하도록 하고 있죠 인증이라함은 아웃룩에서 보내기/받기하면 아이디와 패스워드를 입력하는데, 이것을 가지고 해당 서버의 인증을 받게 됩니다.
즉, NMSMTP를 이용하게 되면 말씀하신대로 사내에서만 전달되거나 릴레이를 허용한 경우에만 외부로 전달되고 또는 외부 메일주소의 해당 SMTP서버를 직접 host프로퍼티에 입력한 경우에만 전달이 됩니다.(메일 서버의 릴레이를 허용하게 되면 모르는 사이에 스팸메일 보내기의 중간경로로 악용되는 경우가 있으니 매우 조심해야 합니다.)
게다가 요즈음은 대부분 메일을 html타입으로 보내는데 메일 텍스트는 html이고 파일을 첨부한 경우는 메일 내용이 plain text 로 바뀌어 버리더군요(html태그가 화면에 그냥 나와버리는...)
그래서 NMSMTP보다는 Indy에 있는 SMTP컴포넌트를 사용하는 것이 좋습니다. userID와 password를 입력 할 수 있도록 되어 있고 로그인방식을 설정할 수 있습니다. userID와 password에는 보낼메일서버에 접속할 수 있는 계정을 입력해야 합니다. 해당 서버의 로그인 계정이나 SMTP서버에서 정하는 어떠한 별도의 계정이 될 수도 있습니다. 예를들어 보낼메일서버(SMTP)가 NT-IIS(or Exchange)라면 NT계정이 되는 것이지요
또..파일을 첨부하더라도 NMSMTP처럼 html이 깨져보이는 경우도 없고 권할 만 합니다. 물론 무료로 사용할 수 있구요 indy란, 같은 이름의 다수의 네트워크 컴포넌트 모음을 말하고 게시판에서 찾으시면 다운로드 받을 수 있을 겁니다.
실제로 Indy 컴포넌트가지고 다량메일발송 시스템이나 채팅, 소켓파일전송, 메신저 등을 제작했었는데 문제없이 잘 되더군요
> 안녕하세요?
> 델파이 왕초보 전유대라고 합니다..
> 지금 NMSMTP컴포넌트를 사용해서.. 멜보내는 클라이언트 프로그램을 만들고
> 있는데.. 인증설정을 어떻게 하는지 몰라서.. 사내 서버안의 계정에서는
> 보내지는데.. 밖에 서버로는 않보내지는군요..
> 혹시 아시는분 있으면 답변 부탁 드립니다..
> 그럼 항상 즐코 하세요
만일 아웃룩처럼 사용자가 임의의 '보낼메일서버'를 지정하도록 한 후 자유롭게 메일을 보내는 프로그램을 만들고자 한 것이라면 TNMSMTP컴포넌트는 적당하지 않습니다.
NMSMTP컴포넌트의 프로퍼티중에서 UserID가 있습니다만(그런데 password는 없습니다)이 것은 SMTP서버의 인증을 받는 것은 아닙니다. 다만 해당 SMTP서버가 접속자의 로그를 위해 요구를 할 때 제시하기 위함이고 이것을 해당 서버의 유효한 계정으로 인식하지는 않습니다. 즉, 진짜로 인증을 받는 것이 아니라는...
그렇담 어떻게 사내에서는 메일이 전달되었을까요? 해당서버안에 받을 사람의 계정이 있었기 때문이지요. 또 외부로는 왜 않되었을까요? 해당서버안에 받을 사람의 계정이 있는 것이 아니니까 서버가 다시 어딘가로 전달해주어야 하기 때문입니다.(이것을 릴레이라 부릅니다.)
대부분의 SMTP서버는 일반적으로 릴레이를 허용하지 않도록 하고 있습니다.
릴레이란 SMTP서버가 수신한 메일이 수신한 메일서버 주소의 것이 아니라면 해당 주소로 다시 보내주는 것을 말합니다. 이것을 허용하면 스팸메일등의 악용의 소지가 있으므로 인증된 경우에만 가능하도록 하고 있죠 인증이라함은 아웃룩에서 보내기/받기하면 아이디와 패스워드를 입력하는데, 이것을 가지고 해당 서버의 인증을 받게 됩니다.
즉, NMSMTP를 이용하게 되면 말씀하신대로 사내에서만 전달되거나 릴레이를 허용한 경우에만 외부로 전달되고 또는 외부 메일주소의 해당 SMTP서버를 직접 host프로퍼티에 입력한 경우에만 전달이 됩니다.(메일 서버의 릴레이를 허용하게 되면 모르는 사이에 스팸메일 보내기의 중간경로로 악용되는 경우가 있으니 매우 조심해야 합니다.)
게다가 요즈음은 대부분 메일을 html타입으로 보내는데 메일 텍스트는 html이고 파일을 첨부한 경우는 메일 내용이 plain text 로 바뀌어 버리더군요(html태그가 화면에 그냥 나와버리는...)
그래서 NMSMTP보다는 Indy에 있는 SMTP컴포넌트를 사용하는 것이 좋습니다. userID와 password를 입력 할 수 있도록 되어 있고 로그인방식을 설정할 수 있습니다. userID와 password에는 보낼메일서버에 접속할 수 있는 계정을 입력해야 합니다. 해당 서버의 로그인 계정이나 SMTP서버에서 정하는 어떠한 별도의 계정이 될 수도 있습니다. 예를들어 보낼메일서버(SMTP)가 NT-IIS(or Exchange)라면 NT계정이 되는 것이지요
또..파일을 첨부하더라도 NMSMTP처럼 html이 깨져보이는 경우도 없고 권할 만 합니다. 물론 무료로 사용할 수 있구요 indy란, 같은 이름의 다수의 네트워크 컴포넌트 모음을 말하고 게시판에서 찾으시면 다운로드 받을 수 있을 겁니다.
실제로 Indy 컴포넌트가지고 다량메일발송 시스템이나 채팅, 소켓파일전송, 메신저 등을 제작했었는데 문제없이 잘 되더군요
그럼 다시한번 힘을 내서 코딩에 몰두해 보시옵소서