PHPMailer Foreach 循环

标签 php foreach phpmailer

我目前正在使用 PHPMailer,它从上传的 .txt 文件中获取电子邮件地址列表。当前系统工作正常,但我正在尝试添加一个跟踪系统以查看电子邮件是否被查看。

我们通过向每封电子邮件添加图像来做到这一点,当查看该图像时,通过 php 进行更新,让我们知道电子邮件已被查看。

目前我们的 PHPMail 看起来像这样,

foreach ($email_addresses as $line_num => $line) {
            $ismatch = preg_match('/^[\s,]+$/',$line);
            $isvalid = preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', trim($line));

            // found a blank line, ignore
            if($ismatch)
                echo "";

            // found an invaid email address, add to string
            else if($isvalid==0)
                $strInvalidEmailAddresses .= $line. '<br />';

            // no issues, add to BCC
            else{
                $mail->addBCC($line,$line); 
            }
}

当前系统将每封电子邮件添加到密件抄送。我希望每封电子邮件都发送到每个单独的地址,而不是密件抄送它们。

当我尝试将此图像添加到 HTML 电子邮件的末尾时,遇到了问题。

$track_image = '<img src="http://domain.com/email_test/email_beacon.php?campaign='.$intCampaignID.'&email='.$line.'" alt="" />';

$mail->MsgHTML($html_page.$track_image);

每当我尝试包含跟踪图像时,$行(或电子邮件)始终相同,但我需要根据 .txt 文件中的电子邮件进行更改。

最佳答案

您可以执行以下操作,而不是使用密件抄送:

... initialize PHP mailer ...
... set options common to ALL emails ...
foreach( ... loop over all recipients ...) {
    $mail->ClearAddresses(); // remove previous email addresses
    $mail->AddAddress($new_recipient_here);
    $mail->Body = <<<EOL
... customized html here
<img src="http://domain.com/email_test/email_beacon.php?campaign={$intCampaignID}&email={$address}" alt="" />
... more html here
EOL;

    $mail->send();
}

关于PHPMailer Foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451680/

相关文章:

PHP邮件程序 : replace the default messageID

PHP 'instanceof' 类常量失败

php foreach 继续

linux - csh echo foreach 循环索引

php - 如何将foreach中的字符串组合成单个字符串PHP

smtp - 我应该使用 PHPMailer 还是 SwiftMailer?

javascript - 使用 AJAX 获取 MySQL 的 PHP 表单

php - MySQL SELECT 语句 COUNT 错误

php - 通过单击按钮添加 addcart 的金额

phpmailer 无法添加对地址的回复