如何使用 PHPMAILER 创建取消订阅链接

问题描述

努力实现取消订阅标头

有什么线索吗? 谢谢

foreach ($result as $row) {
    try {
        $mail->addCustomHeader(
            "List-Unsubscribe=One-Click","<mailto:unsubscribe@cineferte.fr?subject=Unsubscribe : $row['email']>,<https://cineferte.fr/abo.PHP?unsub=".$row['email'] . ">"
        );
            $mail->addAddress($row['email'],$row['nom']);
    } catch (Exception $e) {
        echo 'Email invalide: ' . htmlspecialchars($row['email']) . '<br>';
        continue;
    }
    try {
        $mail->send();
        echo 'Email envoyé :' . htmlspecialchars($row['nom']) . '->' . htmlspecialchars($row['email']) . '<br>';
        MysqLi_query(
            $db,"UPDATE `mailing` SET dat_sent = Now() WHERE email = '" . MysqLi_real_escape_string(
                $db,$row['email']
            ) . "'"
        );
    } catch (Exception $e) {
        echo 'Erreur (' . htmlspecialchars($row['email']) . ') ' . $mail->ErrorInfo . '<br>';
        $mail->getSMTPInstance()->reset();
    }
    $mail->clearaddresses();
    $mail->clearattachments();
}

解决方法

您没有正确调用 addCustomHeader;您试图一次设置多个标题,但它不支持,并且标题内容的格式也不正确。改为这样做:

        $mail->addCustomHeader(
            'List-Unsubscribe',"<mailto:unsubscribe@cineferte.fr?subject=Unsubscribe%20:%20{$row['email']}>,<https://cineferte.fr/abo.php?unsub=" . $row['email'] . ">"
        );
        $mail->addCustomHeader(
            'List-Unsubscribe-Post','List-Unsubscribe=One-Click'
        );

除此之外,您似乎正在为发送到列表做正确的事情。