간단한 가이드: PHPMailer를 사용하여 테스트 이메일 보내기
P粉344355715
2023-08-26 21:06:15
<p>저는 Debian/Bullseye에서 로컬 Apache2 서버를 실행하고 있습니다. PHPMailer를 작동시키려고 노력했지만 실패했습니다. PHPMailer를 설치하는 방법에는 두 가지가 있는 것 같습니다. 첫 번째는 제가 시도한 첫 번째 방법인 작곡가를 사용하는 것입니다. 사이트 루트에 autoload.php 파일과 기타 몇 가지 파일이 포함된 공급업체 폴더를 생성합니다. 파일에는 다음 내용이 포함되어 있습니다. </p>
<pre class="brush:php;toolbar:false;"><?php
// autoload.php @Composer에 의해 생성됨
require_once __DIR__ '/composer/autoload_real.php';
return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre>
<p>완료되지 않은 것 같습니다(닫는 태그 없음). 어쨌든 "test.php" 예제를 작동시킬 수 없습니다. </p>
<p>또 다른 방법은 gethub 웹사이트에서 .zip 파일을 다운로드하여 사이트의 루트 디렉터리에 압축을 푸는 것입니다. 이름을 바꾼 후 PHPMailer 폴더가 생겼습니다. "mailer.php" 예제를 사용해도 아무런 효과가 없습니다. </p>
<p>두 경우 모두 도메인의 실제 계정 정보(보내는 이메일, 로그인 비밀번호, smtp 서버 이름, 호스트의 smtp 보안, 포트 설정)를 사용하도록 smtp 정보를 수정했지만 거부에도 답변이 없습니다. 이메일이 수신되었습니다. 아무 일도하지. 내가 보는 것은 빈 웹 페이지뿐입니다. </p>
<p> 이전에 사용했던 PHP 스크립트가 여전히 작동하기 때문에 PHP가 실행 중입니다(내 테스트 사이트에서 - 실제 사이트에서는 이제 smtp 사용을 요구하고 PEAR 모듈을 설치할 수 없습니다).</p>
<p>다음은 제가 사용하고 있는 mailer.php 스크립트입니다. 일부 세부정보는 숨겨져 있습니다. </p>
<pre class="brush:php;toolbar:false;"><?php
//PHPMailer 클래스를 전역 네임스페이스로 가져옵니다.
//함수 내부가 아닌 스크립트 상단에 있어야 합니다.
PHPMailerPHPMailerPHPMailer를 사용하세요.
PHPMailerPHPMailerSMTP를 사용하십시오.
PHPMailerPHPMailerException을 사용하십시오.
'PHPMailer/src/Exception.php'가 필요합니다.
'PHPMailer/src/PHPMailer.php'가 필요합니다.
'PHPMailer/src/SMTP.php'가 필요합니다.
//인스턴스를 생성합니다. 예외를 활성화하려면 'true'를 전달합니다.
$mail = 새로운 PHPMailer(true);
노력하다
{
//서버 설정
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //자세한 디버깅 출력 활성화;
$mail->isSMTP() //SMTP를 사용하여 보내기
$mail->Host = 'mail.<domain>.ca' //통과할 SMTP 서버를 설정합니다.
$mail->SMTPAuth = true; //SMTP 인증 활성화;
$mail->사용자 이름 = 'mail@<도메인>.ca' //SMTP 사용자 이름
$mail->Password = '<비밀>' //SMTP 비밀번호
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS //암시적 TLS 암호화 활성화;
$mail->Port = 465; //연결할 TCP 포트, 'SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS'가 설정된 경우 587을 사용하세요.
//받는 사람
$mail->setFrom('mail@<domain>.ca', '나로부터');
$mail->addAddress('gary@<domain>.ca', '나에게') //수신자 추가
// $mail->addAddress('Recipient@emailaddress.com') //이름은 선택사항입니다.
// $mail->addReplyTo('yourname@domain.com', '귀하의 이름');
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
//첨부파일(선택사항)
// $mail->addAttachment('/var/tmp/file.tar.gz') //첨부파일 추가
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg') //선택적 이름
//콘텐츠
$mail->isHTML(true); //이메일 형식을 HTML로 설정
$mail->Subject = '제목은 여기입니다';
$mail->Body = '굵게 표시된 HTML 메시지 본문입니다!';
$mail->AltBody = 'HTML이 아닌 메일 클라이언트의 일반 텍스트 본문입니다.';
$mail->send();
echo '메시지가 전송되었습니다';
}
잡기 (예외 $e)
{
echo "메일러 오류: {$mail->ErrorInfo}";를 보낼 수 없습니다.
}
?></pre>
<p>TLS 라인은 호스팅 회사에서 가져온 것이므로 정확하다고 가정합니다. </p>
<p>테스트에 필요하지 않은 옵션을 주석 처리했지만 여전히 작동하지 않습니다. 누구든지 내가 뭘 잘못하고 있는지 알아낼 수 있나요? </p>
<p>감사합니다. </p>
알겠습니다. 알겠습니다. 호스팅 회사는 테스트 코드를 제공하며 해당 예제에서는 smtp.domain.com을 사용합니다. 실제로 smtp 서버는 smtp가 아닌 메일입니다. 존재하지 않는 서버에 직면하면 코드 실행이 중지되는 것 같아요...