搜尋

首頁  >  問答  >  主體

如何根據特定條件在PHPMailer中選擇SMTP帳戶?

在我的 WordPress v6.0 中,我設定了透過 $phpmailer 發送 SMTP 郵件 (no-reply@example.com),運作正常。

我想使用另一個 SMTP 電子郵件帳戶 (contact@example.com) 進行所有自訂聯絡表單通訊。

使用 wp_mail() 傳送聯絡表單電子郵件,如下所示:

wp_mail($form_to, $form_subject, $form_body, implode("\r\n", $form_headers));

如何識別上述 wp_mail 並使用特定的 SMTP 帳戶?下面是我的程式碼,沒有真正的 if 條件來檢查:

// MAILER
add_action('phpmailer_init', 'send_smtp_email', 10, 1);

function send_smtp_email($phpmailer) {

    $phpmailer->isSMTP();
    $phpmailer->isHTML(true);

    if (wp_mail == "contact_form") { // not a real condition, this is what I want to achieve
        $phpmailer->Host = 'smtp.example.com';
        $phpmailer->SMTPAuth = 'true';
        $phpmailer->Port = 465;
        $phpmailer->Username = 'contact@example.com';
        $phpmailer->Password = 'password1';
        $phpmailer->SMTPSecure = 'ssl';
        $phpmailer->From = 'contact@example.com';
        $phpmailer->FromName = 'Site Contact Form';
    } else {
        $phpmailer->Host = 'smtp.example.com';
        $phpmailer->SMTPAuth = 'true';
        $phpmailer->Port = 465;
        $phpmailer->Username = 'no-reply@example.com';
        $phpmailer->Password = 'password2';
        $phpmailer->SMTPSecure = 'ssl';
        $phpmailer->From = 'no-reply@example.com';
        $phpmailer->FromName = 'Site Mail';
    }
}

P粉315680565P粉315680565327 天前678

全部回覆(1)我來回復

  • P粉135799949

    P粉1357999492024-02-05 09:12:30

    這就是我解決這個問題的方法。

    在評論表單電子郵件中包含自訂標頭:評論:評論表單

    使用wp_mail過濾器,檢查評論表單發送的電子郵件是否如下:

    add_filter('wp_mail', 'set_smtp_email_accounts');
    
    function set_smtp_email_accounts($mail) {
    
        // Comment form mails custom header
        $header = $mail['headers'];
        $header_text = 'Comments: Comment Form';
        $header_check = in_array($header_text, $header);
    
        //if comment form mails 
        if ($header_check) {
            add_action('phpmailer_init', 'send_smtp_email_comments', 10, 1); // if comments form mail
        } else {
            add_action('phpmailer_init', 'send_smtp_email', 10, 1); 
        }
    
        return $mail;
    }

    回覆
    0
  • 取消回覆