在PHP中发送特定于电子邮件的链接

时间:2016-12-20 14:32:24

标签: php email hyperlink

我正在尝试在我的PHP电子邮件中建立取消订阅链接 - 但是,我希望这些链接特定于他们发送到的电子邮件。例如,如果我将电子邮件发送到“joe@example.org”,我希望该链接类似于“example.org/unsubscribe.php?joe@example.org”。 (我意识到这不安全 - 我会把它变成一串字符)

我尝试使用数组 - 但是,我收到了错误

Warning: mail() expects parameter 1 to be string, array given on line 51

这是我的代码:

$to = array("example@example.org,example2@example.org");

我知道这是可能的 - 大多数来自大公司的电子邮件都有取消订阅链接,用于跟踪要取消订阅的电子邮件。这是怎么做到的?他们使用上述方法,还是发送个人电子邮件?

2 个答案:

答案 0 :(得分:2)

好的,要解决第一个错误,请不要在$ to中使用数组,将其设为字符串(只需删除array())。

至于取消订阅,通常你想要的是有一个指向你网站上的页面的链接,然后你可以添加一些东西到那个链接的末尾,就像你一样说明。

最简单的例子就像unsubscribe.php?email=john.doe@gmail.com

如果你想稍微模糊它,你可以base64对它进行编码,然后在你的取消订阅页面上base64解码它,然后使用它在你的表中进行查找。您还可以使用多个指标,例如电子邮件,用户ID,可能是引用您发送的电子邮件的唯一ID ...这一切都取决于您的应用程序,但您想要做些什么来阻止某人只需更新您的查询字符串并在取消订阅页面上启动它。

Base64编码/解码在任何方面都不安全,它只是为更多临时用户模糊了数据。

答案 1 :(得分:0)

你的代码中可能有这样的东西:

mail($to);

尝试类似:

mail($to[0]);

mail($to[1]);

或当您有一个包含电子邮件的数组时,您都希望取消订阅:

$to = array("mail@mail.com", "mail1@mail.com", "mail2@mail.com");

foreach($mail in $to) {
    mail($mail);
}

或者只是让$to成为一个字符串而不是一个数组,这甚至会好得多。

但是如果你需要使用数组,请使用我上面给出的代码片段。