Yii2 애플리케이션에서 모든 이메일을 하나의 받은 편지함으로 리디렉션하는 방법

2129 단어 yii2debugemailsmtp
\yii\mail\BaseMailer::useFileTransport은 훌륭한 도구입니다. 활성화하면 이 메일러를 통해 전송된 모든 이메일이 전송되는 대신 @runtime/mail에 (기본적으로) 저장되어 개발자가 결과를 검사할 수 있습니다.

그러나 받은 편지함에서 실제로 이메일을 수신하려는 경우에는 어떻게 될까요? 모든 이메일이 하나의 계정으로 이동한다고 가정하면 문제가 없습니다. 매개변수로 설정하고 params-local.php에서 수정합니다(고급 애플리케이션 템플릿 가정).

앱이 다른 계정으로 이메일을 보내고 replyTo, cc 및 bcc 필드를 사용해야 할 때 큰 문제가 발생합니다. if(YII_DEBUG) 를 많이 사용하지 않고 이전 접근 방식으로 해결하는 것은 거의 불가능합니다.

자, 다음으로 해결책이 있습니다.

'useFileTransport' => true,
'fileTransportCallback' => function (\yii\mail\MailerInterface $mailer, \yii\mail\MessageInterface $message) {
    $message->attachContent(json_encode([
            'to' => $message->getTo(),
            'cc' => $message->getCc(),
            'bcc' => $message->getBcc(),
            'replyTo' => $message->getReplyTo(),
        ]), ['fileName' => 'metadata.json', 'contentType' => 'application/json'])
        ->setTo('[email protected]') // account to receive all the emails
        ->setCc(null)
        ->setBcc(null)
        ->setReplyTo(null);

    $mailer->useFileTransport = false;
    $mailer->send($message);
    $mailer->useFileTransport = true;

    return $mailer->generateMessageFileName();
}



어떻게 작동합니까? fileTransportCallback@runtime/mail 에 저장된 이메일을 생성하는 데 사용해야 하는 파일 이름을 지정하는 콜백입니다. 그것은 이메일 전송 프로세스를 "가로채기"하여 우리의 돌고래에 사용할 수 있습니다.
  • 실제 수신자 정보가 포함된 json 파일을 첨부하여 검토할 수 있도록 합니다.
  • 받는 사람(TO)을 모든 이메일을 수신할 이메일 주소로 설정합니다.
  • 다른 받는 사람 필드를 null로 설정합니다.
  • 비활성화 useFileTransport
  • 이메일 보내기
  • 활성화 useFileTransport
  • 기본 파일 이름을 반환합니다(작업 날짜/시간).

  • 이렇게 하면 지정된 계정의 모든 이메일을 수신하고 @runtime/mail 에 저장합니다.

    Yii2 애플리케이션에서 이메일을 검토하는 아주 간단한 도우미입니다.

    좋은 웹페이지 즐겨찾기