【问题标题】:Send email with dynamic content for the list of users from database为数据库中的用户列表发送包含动态内容的电子邮件
【发布时间】:2017-06-23 11:03:33
【问题描述】:

我有一个用户列表,我必须向他们发送一封电子邮件,每个用户都有单独的链接。

我的电子邮件 - 尊敬的用户,

这里有一些消息内容。要确认您的操作,请单击此处。

用户列表以以下格式保存在我的数据库中 -

先生。否 - 用户电子邮件 - 链接

我已经尝试了下面的代码,页面进入加载循环,没有任何反应。我在这里尝试使用电子邮件 API,但我对其他可以实现目标的想法持开放态度。

    ob_start ();
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        include_once("connect.php");
        $sql1 = "SELECT email FROM `tablename`";
        $result = mysqli_query($conn, $sql1);
        if (mysqli_num_rows($result) > 0) {
// output data of each row
            while($row = mysqli_fetch_assoc($result)) {
                $recipients = $row["email"];
                $url = $row["url"];
                try {
                    require_once 'SarvMTA_PHP/Sarv.php';
                    $sarv = new Sarv('userid', 'apitoken',
                        'SarvTES_APP_DOMAIN');
                    $smtp_user_name = "smtpusername";
                    $message["html"] = "
Please follow this link to confirm: .<a href='{$url}'>Click here </a>";
                    $message["subject"] = " subject";
                    $message["from_email"] = "TR <emai@mysite.com>";
                    $message["to"] = array(
                        array("email" => $recipient['email'], "name" => $recipient['name'], "type" => "to")
                    );
                    $message["headers"] = array("Reply-To" => "senderemail@mysite.com", "X-
Unique-Id" => "Id");
                    $result = $sarv->messages->sendMail($smtp_user_name, $message);
                    print_r($result);
                } catch (Sarv_Error $e) {
// Sarv errors are thrown as exceptions
                    echo "A sarv error occurred: " . get_class($e) . " - " . $e->getMessage();
                }
            }  else {
                echo "All mails sent ! Well done";
            }

【问题讨论】:

  • 首先更正您的消息,使其看起来像这样“请点击此链接确认:.点击此处”;接下来 $url 变量在哪里定义?也更正你的代码,你不需要 require_once 并在循环内创建对象。
  • edit您的问题删除代码中的所有空行。它们毫无意义,使您的代码更难阅读。还请提供有关问题所在的更多详细信息。
  • 进行了更改。现在页面抛出 http 500 错误

标签: php mysql api email


【解决方案1】:

您的代码中有几个问题。

这个用在什么地方? $recipients = $row["email"];

$recipient 变量在哪里定义? $recipient['email'] 和 $recipient['name']

如果我们假设 $recipient = $row,显然您的 SQL 选择语句

中缺少 name

更正您的 SQL 语句,使其看起来像这样(假设 name 列 存在于表中)

select name,email,url from `tablename`

下一个替换

$recipient = $row;
//instead of
$recipients = $row['email'];

然后更正您的信息

$message["html"] = "Please follow this link to confirm: .<a href='{$url}'>Click here </a>";

另外,将这两行移出循环(可能在 if 语句之后)

require_once 'SarvMTA_PHP/Sarv.php';
$sarv = new Sarv('userid', 'apitoken', 'SarvTES_APP_DOMAIN');

【讨论】:

  • 添加... 还有一个“else”挂在“while”循环而不是 if 语句。但是该消息可以在 while 完成后放置,而不需要 else...
猜你喜欢
  • 2018-12-07
  • 2013-08-20
  • 2011-05-19
  • 1970-01-01
  • 2017-01-20
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
相关资源
最近更新 更多