我設定了一個 config.php 檔案,以便我的客戶可以輕松地為他們網站上的在線表單添加電子郵件、主題和其他發送資訊。它看起來像這樣:
<?php
$config = [
"host" => "xxx",
"username" => "xxx",
"password" => "xxx",
"secure" => "ssl", // ssl or tls
"port" => 465,
"sendTo" => "[email protected]",
"sendToBCC" => "[email protected]",
"from" => "[email protected]",
"fromName" => "Contact Form"
];
我現在面臨的挑戰是發送到多封電子郵件。我試過了,"sendTo" => "[email protected], [email protected], [email protected]",但它拋出了無效的電子郵件錯誤。
在發送檔案中,我們有以下代碼:
//Recipients
$mail->setFrom($config['from'], $config['fromName']);
$mail->addAddress($config['sendTo']);
$mail->addCC($config['sendToCC']);
$mail->addBCC($config['sendToBCC']);
$mail->addAddress($_POST['email']);
所以我猜這條線$mail->addAddress($config['sendTo']);在選擇多封電子郵件時遇到了麻煩。我們如何編輯此代碼以允許多個收件人?非常希望確保我們的客戶可以輕松地在 config.php 檔案而不是發送檔案中添加電子郵件。
uj5u.com熱心網友回復:
基于來自@Chris Haas 共享鏈接的PHPMailer 示例。我做了這些改變:
<?php
$config = [
"host" => "xxx",
"username" => "xxx",
"password" => "xxx",
"secure" => "ssl", // ssl or tls
"port" => 465,
"sendTo" => "[email protected]",
"sendTo2" => "[email protected]",
"sendTo3" => "[email protected]",
"sendToBCC" => "[email protected]",
"from" => "[email protected]",
"fromName" => "Contact Form"
];
在發送檔案中,我這樣做了:
//Recipients
$mail->setFrom($config['from'], $config['fromName']);
$mail->addAddress($config['sendTo']);
$mail->addAddress($config['sendTo2']);
$mail->addAddress($config['sendTo3']);
$mail->addCC($config['sendToCC']);
$mail->addBCC($config['sendToBCC']);
$mail->addAddress($_POST['email']);
那解決了這個問題。
uj5u.com熱心網友回復:
您可以支持兩種情況:
$addrs = preg_split('#[\\s;,] #', $config['sendTo'], -1, PREG_SPLIT_NO_EMPTY);
foreach ($addrs as $addr) {
$mail->addAddress($addr);
}
這會將 a"[email protected]; [email protected], [email protected] [email protected]"分成四個地址,并將它們全部添加。單個地址將浪費幾個周期來轉換為一個元素陣列,但隨后也能正常作業。
你可能想也過濾$addrs通過filter_var,使用array_unique,什么事都不做,如果count($ addrs的)是零,這意味著沒有有效的地址可供選擇:
function filterMail($emails) {
$emails = array_map('trim', $emails);
$emails = array_filter($emails);
$emails = array_unique($emails);
$emails = array_map(
function ($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
},
$emails
);
$emails = array_filter($emails);
$emails = array_values($emails);
return $emails;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336776.html
