$mail->AddReplyTo("divyasundarsahu@gmail.com","Divyasundar Sahu");
$mail->AltBody = $message;
1) $mail->AddReplyTo:
이 메서드는 이메일 수신자가 '답장(Reply)' 버튼을 눌렀을 때, 답장이 가게 될 이메일 주소와 이름을 설정합니다. 기본적으로, 수신자가 이메일에 답장을 할 때 답장이 발신자의 주소로 자동으로 설정되지만, AddReplyTo를 사용하면 답장 주소를 다르게 설정할 수 있습니다. 여기서 "divyasundarsahu@gmail.com"은 답장을 받을 이메일 주소이고, "Divyasundar Sahu"는 해당 주소의 표시 이름입니다.
2) $mail->AltBody:
수신자의 이메일 클라이언트가 HTML 형식을 지원하지 않을 경우 표시되는 대체 텍스트입니다. $mail->isHTML(true);로 HTML 이메일을 보내더라도, 만약 수신자가 HTML 이메일을 볼 수 없는 환경에서 이메일을 열 경우 AltBody에 설정된 텍스트가 표시됩니다. 여기서 $message는 HTML 형식으로 본문이 작성되지 않았을 때 표시될 일반 텍스트 메시지입니다.
1) SMTP (Simple Mail Transfer Protocol): PORT: 25
SMTP는 이메일을 보내기 위한 표준 프로토콜입니다. 이메일 서버 간에 이메일을 전송하거나, 클라이언트(이메일을 보내는 사용자)로부터 이메일 서버로 메시지를 전송하는 데 사용됩니다. SMTP는 주로 "발송"에 초점을 맞추며, 이메일 서버에서 다른 서버로 이메일을 전달하는 역할을 합니다.
2) POP3 (Post Office Protocol version 3): PORT: 110
POP3는 이메일 클라이언트가 서버로부터 이메일을 받아오기 위한 프로토콜입니다. 서버에 저장된 이메일을 사용자의 컴퓨터나 모바일 기기로 다운로드하는 데 사용됩니다. POP3는 서버에서 메시지를 "가져오고(다운로드하고)" 그 후에 서버에서 메시지를 삭제하는 경향이 있습니다(클라이언트 기반에서 이메일을 관리).
3)TELNET으로 프토토콜 통신상태 확인:
- TELNET [SMTP 서버 주소] 25 또는 TELNET [SMTP 서버 주소] 587 (TLS를 사용하는 경우) ex) TELNET smtp.gmail.com 587
- TELNET [서버주소] POP: 서버가 생성한 세션별 고유 식별자가 있는 것을 인지
ex) +OK <1705391579> POP3 Service Ready -> 나가려면 quit 쓰면 됨.
- TELNET을 사용하여 POP3 서버에 접속할 때 서버가 세션별로 고유 식별자를 생성하는 이유는 주로 보안과 프로토콜 규정 준수에 있습니다. 이 고유 식별자는 각 세션을 구별하고, 특정 세션의 상태를 추적하는 데 사용됩니다. 여기에는 여러 가지 중요한 목적이 있습니다:
- 세션 관리: 고유 식별자는 서버가 각 클라이언트의 연결을 구별하고, 그 연결에 대한 정보를 관리하는 데 도움을 줍니다. 예를 들어, 서버는 이 식별자를 사용하여 각 클라이언트의 상태, 요청 및 세션 데이터를 추적할 수 있습니다.
- 보안 강화: 고유 식별자를 사용함으로써 서버는 각 세션을 개별적으로 관리하고, 불필요하거나 악의적인 접근으로부터 보호할 수 있습니다. 이는 특히 공개 네트워크에서 중요한 요소입니다.
- 중복 방지: 서버가 각 연결에 대해 고유한 식별자를 생성함으로써, 동일한 클라이언트나 다른 클라이언트에 의한 중복 연결을 방지할 수 있습니다. 이것은 서버의 리소스 관리와 안정성 향상에 기여합니다.
- 프로토콜 규정 준수: 많은 네트워크 프로토콜은 세션 관리와 관련하여 특정 규칙과 기준을 가지고 있으며, 고유 식별자의 생성과 사용은 이러한 규칙을 준수하는 데 필요합니다.
- 디버깅 및 로깅: 문제 해결과 시스템 로깅을 위해, 각 세션을 구별할 수 있는 식별자가 있으면 서버 로그에서 특정 세션의 활동을 추적하고 분석하기가 훨씬 쉬워집니다.
- 보안 측면에서, 고유 식별자 자체가 직접적인 보안 기능을 제공하는 것은 아니지만, 각 세션의 관리와 추적을 용이하게 함으로써 전반적인 네트워크 보안 관리에 도움을 줍니다.
-TELNET이 없다면 윈도우 기능 켜기에서 TELNET을 켜야된다.
$phpmailer = new PHPMailer(true);
$phpmailer->SMTPDebug = SMTP::DEBUG_CONNECTION;
$phpmailer: PHPMailer의 인스턴스를 나타냅니다. 이 인스턴스를 통해 이메일을 구성하고 보낼 수 있습니다.
->: 객체의 속성이나 메서드에 접근할 때 사용되는 연산자입니다.
SMTPDebug: PHPMailer 인스턴스의 속성 중 하나로, SMTP 통신 과정에서 발생하는 디버깅 정보의 양을 설정합니다.
SMTP::DEBUG_CONNECTION: SMTP 클래스의 상수이며, 디버깅 수준을 나타냅니다. 여기서는 연결 과정에서 발생하는 디버그 정보만을 표시하도록 설정하는 값입니다.
DEBUG_CLIENT (0): $phpmailer->SMTPDebug에 특정 값 (DEBUG_CLIENT, DEBUG_SERVER, DEBUG_CONNECTION, DEBUG_LOWLEVEL)을 할당하지 않으면, 기본적으로 설정되는 값으로, 이메일 전송 과정에서 디버그 정보가 필요하지 않은 일반적인 사용 상황에 적합합니다. 예를 들어, 개발 또는 테스트 환경에서 문제를 진단할 필요가 없는 경우나 실제 운영 환경에서는 디버그 정보를 출력하지 않도록 설정하는 것이 일반적입니다.
DEBUG_CLIENT (1): 이 레벨은 클라이언트(즉, PHPMailer를 사용하는 코드)가 서버(메일 서버)에 보내는 명령들만을 보여줍니다. 예를 들어, 메일 서버에 연결하거나, 메일 보내기 명령을 보낼 때의 정보가 이에 해당합니다.
CLIENT -> SERVER: EHLO [hostname]
CLIENT -> SERVER: AUTH LOGIN
CLIENT -> SERVER: [base64-encoded username]
CLIENT -> SERVER: [base64-encoded password]
CLIENT -> SERVER: EHLO [hostname]
SERVER -> CLIENT: 250-Hello [hostname]
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 [base64-encoded prompt]
CLIENT -> SERVER: EHLO [hostname]
SERVER -> CLIENT: 250-Hello [hostname]
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 [base64-encoded prompt]
Connection: opening to smtp.example.com:587, timeout=300, options=array()
CLIENT -> SERVER: EHLO [hostname]
SERVER -> CLIENT: 250-Hello [hostname]
Connection: closed
Connection: opening to smtp.example.com:587, timeout=300, options=array()
SMTP INBOUND: "220 smtp.example.com ESMTP Postfix"
CLIENT -> SERVER: EHLO [hostname]
SERVER -> CLIENT: 250-Hello [hostname]
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 [base64-encoded prompt]
CLIENT -> SERVER: [base64-encoded username]
SERVER -> CLIENT: 334 [base64-encoded prompt]
CLIENT -> SERVER: [base64-encoded password]
SERVER -> CLIENT: 235 2.7.0 Authentication successful