【问题标题】:Mass email users their unique passwords大量电子邮件用户的唯一密码
【发布时间】:2013-01-06 18:55:36
【问题描述】:

我有一个包含 2k+ 用户的数据库,我想向他们发送他们自己的密码,但要大量通过电子邮件将其发送给他们。群发电子邮件可以通过多种方式完成,但问题是如何做到这一点,以便每个用户都获得他/她自己的唯一密码?

用户密码存储在 MySQL 数据库中的一个字段中。电子邮件地址也是如此。

欣赏任何想法。

【问题讨论】:

  • 该数据库的域是什么 ;-)
  • 您不能发送具有不同内容的单个邮件。您必须循环发送邮件,根据需要为每个用户更改内容。
  • 我同意 Rikesh 的观点,并且我建议您向用户发送包含链接的相同消息。该链接会将他们带到申请页面,他们可以在其中获取当前密码

标签: php massmail


【解决方案1】:

我想给他们发送自己的密码

NOOOOOO 请不要

参见例如Password policy hall of shame:

以纯文本形式存储密码是不安全的。

是时候让在线服务清理他们的行为了!

另外:plaintextoffenders.com - “你刚刚把我自己的密码发回给我了吗?!”

通过电子邮件发送明文密码被认为是一种非常非常糟糕的做法。密码应该是散列的;所有用户都应该能够通过电子邮件获得重置它的链接。

不过,要回答您的问题,您必须浏览每条记录,并向每位客户发送一封自定义电子邮件。这可能是资源密集型的,和/或如果一次有太多消息会导致机器停机,因此您必须在发送每束消息之间等待。您还可以使用第 3 方服务,例如 MailChimp

【讨论】:

  • 谢谢,但是我知道风险,这不是一个实时网站,它是一个私人项目。并且无论密码是如何发送出去的。
  • @Johan 很公平。在这种情况下,您只想一个接一个地发送每条消息......您的 MailMerge 想法也很好,因为这可能会稍微分散负载。不错!
【解决方案2】:

这种方法有什么问题(伪代码):

$result = sql_query ("SELECT id, email, username, password FROM users"); // get all users

$mailer = new SomeMailer();
while ($row = sql_fetch_row($result)) {
    $mailer->AddRecipient($row['email']);
    $mailer->AddBody("Hey, here is you pass LOL: " . $row['password']);
    $mail->Send();
}

一般情况下你可以这样做,不过我建议你认真对待 Pekka 的建议。以纯文本形式发送密码是一个很大的禁忌。

【讨论】:

    【解决方案3】:

    嗯,我发现完成这项工作的最灵活和最简单的方法是在 MS WORD 中使用 MailMerge,然后发送消息。

    Microsoft Word --> 邮件 您必须从数据库中提取所需的数据字段并将它们保存为 MS Excell 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多