programing

phpmailer: "응답처" 주소만 사용하여 회신합니다.

bestcode 2022. 9. 18. 12:53
반응형

phpmailer: "응답처" 주소만 사용하여 회신합니다.

저는 웹사이트에서 phpmailer를 사용하고 있으며, 스팸 문제를 해결하기 위해 (SMTP를 사용하여) 이메일을 보낼 메일함을 만들었습니다.

메일함 주소에서 수신하도록 이메일을 설정하고 답장 수신처를 주소로 추가했습니다.

$mail = new PHPMailer();

$mail->IsSMTP();
$mail->SMTPAuth   = true;
$mail->SMTPSecure = 'tsl';
$mail->SMTPDebug  = 1;
$mail->Host       = EMAIL_HOST;
$mail->Port       = EMAIL_PORT;
$mail->Username   = EMAIL_USER;
$mail->Password   = EMAIL_PASS;

$mail->SetFrom('mailbox@email.com', 'Mailbox name');
$mail->AddReplyTo('replyto@email.com', 'Reply to name');
$mail->AddAddress('user@email.com', 'User name);

메일은 정상적으로 송신되어 스팸 필터는 정상적으로 통과하고 있는 것 같습니다만, 제가 회신을 누르면 메일함 계정과 계정에 대한 회신이 모두 포함되어 있습니다.

이게 원래 일어나야 할 일인가요?답장주소만 눌러주셨으면 합니다.이게 가능하기나 해?

도움을 주셔서 감사합니다!


편집:

전자 메일 헤더를 보면, 발신인 주소가 회신처 필드에 포함되어 있는 것 같습니다.왜 그랬는지 모르겠어!

Date: Tue, 1 May 2012 11:16:25 +0100
To: User name <user@email.com>
From: Mailbox name <mailbox@email.com>
Reply-to: Mailbox name <mailbox@email.com>, Reply to name <replyto@email.com
Subject: Email subject
Message-ID: <54c530c0d1f3ff33fc87c4c41c2c9ffd@localhost>
X-Priority: 3
X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
MIME-Version: 1.0
Content-Type: multipart/alternative;
     boundary="b1_54c530c0d1f3ff33fc87c4c41c2c9ffd"

--b1_54c530c0d1f3ff33fc87c4c41c2c9ffd
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit

나는 이것에 대한 답을 찾았고, 그것은 짜증날 정도로 간단하다!기본적으로 주소에 대한 응답을 발신인 주소 앞에 추가해야 합니다.

$mail->addReplyTo('replyto@email.com', 'Reply to name');
$mail->SetFrom('mailbox@email.com', 'Mailbox name');

phpmailer 코드를 더 자세히 살펴보면 다음과 같습니다.

public function SetFrom($address, $name = '',$auto=1) {
   $address = trim($address);
   $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
   if (!self::ValidateAddress($address)) {
     $this->SetError($this->Lang('invalid_address').': '. $address);
     if ($this->exceptions) {
       throw new phpmailerException($this->Lang('invalid_address').': '.$address);
     }
     echo $this->Lang('invalid_address').': '.$address;
     return false;
   }
   $this->From = $address;
   $this->FromName = $name;
   if ($auto) {
      if (empty($this->ReplyTo)) {
         $this->AddAnAddress('ReplyTo', $address, $name);
      }
      if (empty($this->Sender)) {
         $this->Sender = $address;
      }
   }
   return true;
}

구체적으로는 다음 행입니다.

if (empty($this->ReplyTo)) {
   $this->AddAnAddress('ReplyTo', $address, $name);
}

여러분, 도와주셔서 감사합니다!

적어도 현재 버전의 PHPMailer에서는 응답 배열을 비우는 clearReplyTos() 함수가 있습니다.

    $mail->ClearReplyTos();
    $mail->addReplyTo(example@example.com, 'EXAMPLE');

언급URL : https://stackoverflow.com/questions/10396264/phpmailer-reply-using-only-reply-to-address

반응형