php - 超薄框架电子邮件功能连续重复内容
问题描述
我有以下功能,它应该从数据库中获取一堆广告,并向所有广告已过期的人发送电子邮件。它几乎可以工作,但不完全。
public function rerunExpiredMail()
{
// set base url
$base_url = BASE_URL;
// message variable starts off empty
$message = '';
// get ad information
$j = new Ads();
$ad = $j->showAdDetails();
// find ads that were created 61 days ago
$ads = R::findAll('ads',
" DATE_FORMAT(created, '%Y%m%d') = (CURDATE() - INTERVAL ". EXPIRE_JOBS ." +1 DAY)",
array(':email'=>$ad->email, ':id'=>$ad->id));
// loop found ads and send out email
foreach ($ads as $ad) {
$token = accessToken($ad->id);
$link = BASE_URL . "ads/{$ad->id}/rerun/{$token}";
$subject = "Your advert has expired. Rerun it now!";
$message .= "<p>Hi there! Your advert, <strong>{$ad->title}</strong>, has just expired on {$this->app_name}!</p>";
$message .= "<p>You can rerun your advert for another 60 days (free) by simply clicking the link below:</p>";
$message .= "<p><a href={$link}>Click to rerun your advert now</a></p>";
if ($this->sendNotification($subject, $message, $ad->email)) {
//return true;
}
//return false;
}
}
上面的代码有这样的效果:电子邮件被发送给各方,但第一封电子邮件是正确的,第二封电子邮件将包含第一封电子邮件的内容和第二封电子邮件的内容,第三封电子邮件将包含以下内容第一、第二、第三封邮件,依次类推($message中保存的内容重复)。
如果我取消注释return true;
,return false;
那么只会发送列表中的第一封电子邮件。
请帮忙!
解决方案
从第一个 $message 分配中删除点:
$message = "<p>Hi there! Your advert, <strong>{$ad->title}</strong>, has just `enter code here`expired on {$this->app_name}!</p>";
推荐阅读
- c++ - 学生学习 在 Visual Studio 2019 命令行中创建 GUI 窗口
- java - 报告加载后如何在 BIRT 中异步调用方法
- c - 非静态可以跟随静态,但静态不能跟随非静态?
- python - 在没有任何库的情况下将此公式转换为原始 python
- outlook - 轮询 Outlook 邮件文件夹(收件箱)偶尔会返回 ErrorInvalidMailboxItemId
- javascript - 将 django 上下文数据传递到前端,模板中没有内联脚本
- html - Web:将内容完美居中,但在顶部有一个不会将内容下推的 div
- google-bigquery - 如何在 Big Query 视图中计算短语
- parsing - Antlr parser StackOverflowException(用于解析正则表达式)
- javascript - 在 Gatsby 网页上水平排列图像和文本