상세 컨텐츠

본문 제목

[php ] smtp mailer Error 솔루션

개발생활/php

by 한국인맛집 2025. 1. 22. 15:29

본문

반응형

관리중이던 업체에서 사용하던 smtp 메일 배송 기능 정상동작.

 

최근 업체에서 말도 없이 메일 변경하고 메일 발송이 안된다 요청

 

확인하여 smtp 접속정보만 하여 코드 작성.

 

하지만 계속되는 tls 인증 실패

 


2025-01-22 05:58:56 SERVER -> CLIENT: 220 smtp.[].com ESMTP2025-01-22 05:58:56
CLIENT -> SERVER: EHLO [웹사이트] 
2025-01-22 05:58:57 SERVER -> CLIENT: 250-smtp.[].com250-STARTTLS
250-PIPELINING250-8BITMIME250-SIZE 47185920250 
AUTH LOGIN PLAIN

2025-01-22 05:58:57 CLIENT -> SERVER: STARTTLS2025-01-22 05:58:59
SERVER -> CLIENT: 220 ready for tlsSMTP Error: Could not connect to SMTP host.
2025-01-22 05:59:05 CLIENT -> SERVER: QUIT2025-01-22 05:59:07
2025-01-22 05:59:07SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

 

제일쉬운 방법으로 아래 코드 추가만해주면 된다. mailer 아래에

      $mail->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );

 

 

사용예시는 

// 메일 보내기 (파일 여러개 첨부 가능)
// type : text=0, html=1, text+html=2
function send_mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc="", $bcc="")
{
    global $config;
    global $g5;

    


    if ($type != 1)
        $content = nl2br($content);

    	$mail_send_result = false;

    try {
        $mail = new PHPMailer(); // defaults to using php "mail()"
        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->SMTPSecure = "tls";
        $mail->SMTPAuth = true;
        $mail->Host = $host;  // HOST
        $mail->Port = $port;    // 포트
        $mail->Username = $id; // 아이디
        $mail->Password = $pw;   //  패스워드입니다

        $mail->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );

        $mail->CharSet = 'UTF-8';
        $mail->From = $fmail;
        $mail->FromName = $fname;
        $mail->Subject = $subject;
        $mail->AltBody = ""; // optional, comment out and test
        $mail->msgHTML($content);
        $mail->addAddress($to);
        if ($cc)
            $mail->addCC($cc);
        if ($bcc)
            $mail->addBCC($bcc);
        //print_r2($file); exit;
        if ($file != "") {
//            foreach ($file as $f) {
            $mail->addAttachment($file['path'], $file['name']);
//            }
        }

        $mail = run_replace('mail_options', $mail, $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);

        $mail_send_result = $mail->send();

    } catch (Exception $e) {
    }

    run_event('mail_send_result', $mail_send_result, $mail, $to, $cc, $bcc);

    return $mail_send_result;
}

 

 

이렇게하면 정상 작동함.

 

대신 인증자체를 느슨하게 하다보니  보안취약이 존재할수 있다.

보안 요소가 필요하다면 위 방법은 사용하지 않는것을 추천.

반응형

관련글 더보기