2017-01-27
php의 mail함수로 메일 보내기를 하려면, 해당 서버의 SMTP서버 서비스가 동작중이어야 한다.
그리고 SMTP서버는 프로그램 변경/제거의 윈도우 기능 켜기/끄기 에서 간단히 설치 하여 몇몇 설정만 해주면 동작 한다.

자세한 설정은 아래 주소를 참조하길 바란다.
참조 : https://msdn.microsoft.com/ko-kr/library/dn292550.aspx

설정을 제대로 해준뒤엔 아래의 php소스로 메일을 보내면 될것이다.
$nameFrom  = "보내는사람";
$mailFrom = "보내는사람 메일주소";
$nameTo  = "받는사람";
$mailTo = "받는사람 메일 주소";
$cc = "";
$bcc = "";
$subject = "메일 제목";
$content = "메일 내용";

$charset = "UTF-8";

$nameFrom = "=?$charset?B?".base64_encode($nameFrom)."?=";
$nameTo = "=?$charset?B?".base64_encode($nameTo)."?=";
$subject = "=?$charset?B?".base64_encode($subject)."?=";

$header = "Content-Type: text/html; charset=utf-8\r\n";
$header .= "MIME-Version: 1.0\r\n";

$header .= "Return-Path: <". $mailFrom .">\r\n";
$header .= "From: ". $nameFrom ." <". $mailFrom .">\r\n";
$header .= "Reply-To: <". $mailFrom .">\r\n";
if ($cc)  $header .= "Cc: ". $cc ."\r\n";
if ($bcc) $header .= "Bcc: ". $bcc ."\r\n";

$result = mail($mailTo, $subject, $content, $header, $mailFrom);

if( !$result ) die('sending mail fail');



삭제 대비용 원본글 복사


SMTP 서버 설치 및 구성

 

이러한 단계는 다음에 적용됩니다.

  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012

SMTP 서버 설치

  1. 서버 관리자의 왼쪽 창에서 대시보드를 선택합니다.

  2. 역할 및 기능 추가를 선택합니다. 역할 및 기능 추가는 오른쪽 상단의 관리 메뉴에서도 열 수 있습니다.

  3. 시작하기 전에에서 다음을 선택합니다.

  4. 역할 기반 또는 기능 기반 설치를 선택하고 다음을 선택합니다.

  5. 서버 풀에서 서버 선택을 선택하고, 원하는 서버를 선택하고, 다음을 선택합니다. 서버 관리자에서 서버 추가를 사용하여 추가된 서버가 서버 선택 창에 표시됩니다. 기본적으로 로컬 서버가 선택됩니다.

  6. 서버 역할에서 다음을 선택합니다.

  7. 기능에서 SMTP 서버를 선택합니다. 메시지가 표시되면 기능 추가를 선택합니다. 다음을 선택합니다.

  8. 확인에서 필요한 경우 자동으로 대상 서버 다시 시작을 클릭한 후 설치를 선택합니다. 완료되면 닫기를 선택합니다.

SMTP 서버 구성

다음 단계에서는 IIS 6.0 관리자를 사용하여 SMTP 가상 서버를 구성합니다.

  1. IIS 관리자를 열고, 시작에서 inetmgr6.exe를 검색하여 엽니다.

  2. 컴퓨터 이름을 확장합니다. [SMTP 가상 서버 #1]을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  3. 액세스 탭에서 릴레이 단추를 선택합니다.

  4. 추가를 선택합니다. 단일 컴퓨터에 대해 127.0.0.1을 입력하고 확인을 선택합니다.

    127.0.0.1을 추가하면 로컬 서버에서 이 SMTP 서버를 통해 메시지를 보낼 수 있습니다. 추가 컴퓨터에서 이 SMTP 서버를 통해 메시지를 보내려면 해당 IP 주소를 입력합니다.

  5. 배달 탭에서 아웃바운드 보안을 선택합니다. 다음 중에서 선택합니다.

    익명 액세스: 계정 이름 또는 암호가 필요하지 않습니다. 이 옵션을 사용하면 SMTP 서버에 대한 인증을 사용할 수 없습니다.

    기본 인증: 연결하려는 서버의 계정 이름 및 암호가 일반 텍스트로 전송됩니다. 입력하는 이 계정에서 전자 메일이 전송됩니다. 개인 계정 또는 Exchange 계정에 전자 메일을 보내는 경우 기본 인증을 선택할 수 있습니다. 자격 증명이 일반 텍스트로 전달되므로 TLS 암호화를 사용하도록 설정하는 것이 좋습니다.

    Windows 통합 인증: Windows 도메인 계정 이름 및 암호를 사용하여 인증합니다. 입력하는 계정에서 전자 메일이 전송됩니다.

    TLS 암호화: SSL과 마찬가지로 TLS는 연결을 보호합니다. 이 서버에 올바른 SSL 서버 인증서가 설치되어 있어야 합니다.

    Exchange 계정을 비롯한 개인 메일 계정으로 SMTP 핵심 기능을 테스트하려면 익명 액세스를 선택합니다. 기본 인증이 선택된 경우 SMTP는 AUTH 명령을 사용합니다. AUTH 명령으로 인해 일부 전자 메일 공급자가 실패할 수 있습니다. AUTH 명령이 실패하면 SMTP 서버의 Windows 이벤트 로그에 오류가 기록될 수도 있습니다.

  6. 배달 탭에서 아웃바운드 연결을 선택합니다. 기본적으로 TCP 포트는 25입니다. 이 포트가 방화벽 내에서 열려 있는 경우 다른 포트를 입력할 수 있습니다. 확인을 선택합니다.

  7. 배달 탭에서 고급을 선택합니다. 기본적으로 로컬 서버의 정규화된 도메인 이름이 표시됩니다. 인터넷 공급자에 따라 스마트 호스트 속성이 비어 있을 수 있습니다. 스마트 호스트가 필요한지 여부를 확인하기 위해 인터넷 공급자에게 문의해야 할 수도 있습니다. 그렇지 않은 경우 smtp.EMailProvider.com을 입력할 수 있습니다.

    참고

    릴레이 호스트라고도 하는 스마트 호스트는 Exchange Server에서 나가는 모든 메시지를 라우팅하는 데 사용되는 전용 서버입니다. 스마트 호스트에서 메시지를 받으면 스마트 호스트가 원격 도메인에 메시지를 전달합니다. 스마트 호스트의 목적은 Exchange Server 성능을 높이기 위한 것입니다. Exchange Server는 연결이 설정될 때까지 원격 도메인에 반복해서 연결하지 않고 스마트 호스트에만 메시지를 전송합니다.

  8. 확인을 선택하여 모든 창을 닫습니다.

  9. SMTP 서버를 다시 시작하려면, [SMTP 가상 서버 #1]을 마우스 오른쪽 단추로 클릭하고 중지를 선택한 다음 시작을 선택합니다. SMTP 서버 설정을 적용하려면 다시 시작해야 합니다.

 

Windows Server 2008 R2: SMTP 서버 설치 및 구성

 

SMTP 서버 설치

다음 단계에서는 SMTP 서버 기능을 설치합니다.

  1. 서버 관리자에서 기능을 선택하고 기능 추가를 선택합니다.

  2. 기능 추가에서 SMTP 서버를 선택합니다. 메시지가 표시되면 필요한 역할 서비스 추가를 선택하고 다음을 선택합니다.

  3. 다음을 선택하여 설치를 계속 진행합니다.

  4. 설치 선택 확인 창에서 설치를 선택합니다. 완료되면 닫기를 선택합니다.

SMTP 서버 구성

다음 단계에서는 IIS 6.0 관리자를 사용하여 SMTP 가상 서버를 구성합니다.

  1. IIS 6.0 관리자를 열고, 시작에서 IIS를 검색하고 IIS(인터넷 정보 서비스) 6.0 관리자를 선택합니다.

  2. 컴퓨터 이름을 확장합니다. [SMTP 가상 서버 #1]을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  3. 액세스 탭에서 릴레이 단추를 선택합니다.

  4. 추가를 선택합니다. 단일 컴퓨터에 대해 127.0.0.1을 입력하고 확인을 선택합니다.

    127.0.0.1을 추가하면 로컬 서버에서 이 SMTP 서버를 통해 메시지를 보낼 수 있습니다. 추가 컴퓨터에서 이 SMTP 서버를 통해 메시지를 보내려면 해당 IP 주소를 입력합니다.

  5. 배달 탭에서 아웃바운드 보안을 선택합니다. 다음 중에서 선택합니다.

    익명 액세스: 계정 이름 또는 암호가 필요하지 않습니다. 이 옵션을 사용하면 SMTP 서버에 대한 인증을 사용할 수 없습니다.

    기본 인증: 연결하려는 서버의 계정 이름 및 암호가 일반 텍스트로 전송됩니다. 개인 계정 또는 Exchange 계정에 전자 메일을 보내는 경우 기본 인증을 선택할 수 있습니다. 자격 증명이 일반 텍스트로 전달되므로 TLS 암호화를 사용하도록 설정하는 것이 좋습니다.

    Windows 통합 인증: Windows 도메인 계정 이름 및 암호를 사용하여 인증합니다. 입력하는 계정에서 전자 메일이 전송됩니다.

    TLS 암호화: SSL과 마찬가지로 TLS는 연결을 보호합니다. 이 서버에 올바른 SSL 서버 인증서가 설치되어 있어야 합니다.

    Exchange 계정을 비롯한 개인 메일 계정으로 SMTP 핵심 기능을 테스트하려면 익명 액세스를 선택합니다. 기본 인증이 선택된 경우 SMTP는 AUTH 명령을 사용합니다. AUTH 명령으로 인해 일부 전자 메일 공급자가 실패할 수 있습니다. AUTH 명령이 실패하면 SMTP 서버의 Windows 이벤트 로그에 오류가 기록될 수도 있습니다.

  6. 배달 탭에서 아웃바운드 연결을 선택합니다. 기본적으로 TCP 포트는 25입니다. 이 포트가 방화벽 내에서 열려 있는 경우 다른 포트를 입력할 수 있습니다. 확인을 선택합니다.

    TCP 포트는 인바운드 연결 및 아웃바운드 연결에 사용할 수 있습니다.

  7. 배달 탭에서 고급을 선택합니다. 기본적으로 로컬 서버의 정규화된 도메인 이름이 표시됩니다. 인터넷 공급자에 따라 스마트 호스트 속성이 비어 있을 수 있습니다. 스마트 호스트가 필요한지 여부를 확인하기 위해 인터넷 공급자에게 문의해야 할 수도 있습니다. 그렇지 않은 경우 smtp.EMailProvider.com을 입력할 수 있습니다.

    참고

    릴레이 호스트라고도 하는 스마트 호스트는 Exchange Server에서 나가는 모든 메시지를 라우팅하는 데 사용되는 전용 서버입니다. 스마트 호스트에서 메시지를 받으면 스마트 호스트가 원격 도메인에 메시지를 전달합니다. 스마트 호스트의 목적은 Exchange Server 성능을 높이기 위한 것입니다. Exchange Server는 연결이 설정될 때까지 원격 도메인에 반복해서 연결하지 않고 스마트 호스트에만 메시지를 전송합니다.

  8. 확인을 선택하여 모든 창을 닫습니다.

  9. SMTP 서버 설정을 적용하려면 다시 시작해야 합니다. SMTP 서버를 다시 시작하려면, [SMTP 가상 서버 #1]을 마우스 오른쪽 단추로 클릭하고 중지를 선택한 다음 시작을 선택합니다.

 

SMTP 서버 테스트

 

텔넷을 사용하여 SMTP 서버 구성을 테스트할 수 있습니다. 다음 단계에서는 구성된 SMTP 서버를 사용하여 이메일 주소로 메시지를 보냅니다. http://support.microsoft.com/kb/153119에 텔넷 명령에 대한 설명이 나와 있습니다.

  1. 관리자 권한으로 명령 창을 엽니다.

  2. 명령 프롬프트에서 다음을 입력합니다.

    telnet localhost 25

    텔넷이 설치되지 않은 경우 다음을 입력하여 설치합니다.

    pkgmgr /iu:&quot;TelnetClient&quot;

  3. 다음을 입력하여 통신을 시작합니다.

    EHLO server

  4. 메일 보낸 사람 주소를 입력합니다.

    MAIL FROM: *YourEmailAddress*@*YourProvider*.com

    예를 들어 다음과 같이 입력합니다.

    MAIL FROM: EmailAddress@outlook.com

  5. 메일 받는 사람 주소를 입력합니다.

    RCPT TO: *YourEmailAddress*@*YourProvider*.com

    예를 들어 다음과 같이 입력합니다.

    RCPT TO: EmailAddress@outlook.com

  6. 다음을 입력하여 SMTP 서버에 데이터를 보낼 준비가 완료되었음을 알립니다.

    DATA

  7. 다음을 입력하여 제목을 입력합니다.

    Subject: Test Message

  8. Enter 키를 두 번 누릅니다.

  9. 다음을 입력하여 메시지 본문을 입력합니다.

    This is the message body of the test message.

  10. Enter 키를 누르고 마침표(.)를 입력한 후 Enter 키를 누릅니다.

전자 메일 메시지의 RCPT TO 주소를 확인합니다. 메일 메시지가 배달되지 않은 경우(받은 편지함 및 스팸 폴더 확인) 메시지가 전송되지 않고 SMTP 큐 폴더(C:\inetpub\mailroot\Queue)에 남아 있을 수 있습니다.