我设置了一个config.php文件,使我的客户很容易添加电子邮件,主题和其他发送信息的在线表单在他们的网站上。看起来是这样的:
<?php
$config = [
"host" => "xxx",
"username" => "xxx",
"password" => "xxx",
"secure" => "ssl", // ssl or tls
"port" => 465,
"sendTo" => "abc@email.com",
"sendToBCC" => "xyz@email.com",
"from" => "no-reply@email.com",
"fromName" => "Contact Form"
];我现在面临的挑战是发送多封电子邮件。我尝试过"sendTo" => "abc@email.com, efg@email.com, hik@email.com",,但是它会抛出无效的电子邮件错误。
在发送文件中,我们有以下代码:
//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文件,而不是发送文件。
发布于 2021-10-25 17:48:27
基于@Chris共享的链接的来自PHPMailer的例子提供。我做了这些改变:
<?php
$config = [
"host" => "xxx",
"username" => "xxx",
"password" => "xxx",
"secure" => "ssl", // ssl or tls
"port" => 465,
"sendTo" => "abc@email.com",
"sendTo2" => "efg@email.com",
"sendTo3" => "hik@email.com",
"sendToBCC" => "xyz@email.com",
"from" => "no-reply@email.com",
"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']);这解决了这个问题。
发布于 2021-10-25 17:53:16
您可以支持这两种情况:
$addrs = preg_split('#[\\s;,]+#', $config['sendTo'], -1, PREG_SPLIT_NO_EMPTY);
foreach ($addrs as $addr) {
$mail->addAddress($addr);
}这将将一个"joe@mail1.com; jack@mail2.com, jill@mail3.com jane@mail4.com"分解为四个地址,并将它们全部添加。一个地址将浪费几个周期来转换成一个单元素数组,但也同样有效。
您还可能希望通过filter_var筛选filter_var,使用array_unique,如果计数($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://stackoverflow.com/questions/69711547
复制相似问题