Programming/PHP / / 2023. 11. 14. 16:32

PHPMailer로 메일 보낼 때의 오류(smtp.office365.com)

728x90

PHPMailer로 메일을 보내려고 할 때 메일이 안 가서 SMTPDebug 이 항목을 3으로 바꿔서 로그를 보면 fail이나 error 이런 단어가 보이는 경우가 있습니다. 보통 메일이 정상적으로 간다면 로그를 3으로 두고 찍으면 상당히 길게 나옵니다. 그런데 오류가 발생할 경우는 좀 엄청 짧게 나옵니다. 그 중에서도 아래처럼 TLS를 1.0이나 1.1은 지원하지 않으니 1.2로 올리라고 하는 오류가 있습니다. 특히 host가 smtp.office365.com일 경우입니다.

CLIENT: 421 4.7.66 TLS 1.0 and 1.1 are not supported. Please upgrade/update your client to support TLS 1.2. Visit https://aka.ms/smtp_auth_tls.

이런 경우는 우선 PHPMailer가 설치된 디렉토리로 갑니다. class.smtp.php 파일이 있나 보세요. 그리고 해당 파일을 열고 startTLS()를 찾아보세요.

if (!stream_socket_enable_crypto(
  $this->smtp_conn,
  true,
  //STREAM_CRYPTO_METHOD_TLS_CLIENT 원본
  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
)) {
  return false;
}

위를 보시면 원본이 있는데 그걸 주석으로 막으시고 STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT 이걸로 대체하시면 됩니다.

반응형