首页 > 解决方案 > 超薄框架电子邮件功能连续重复内容

问题描述

我有以下功能,它应该从数据库中获取一堆广告,并向所有广告已过期的人发送电子邮件。它几乎可以工作,但不完全。

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;那么只会发送列表中的第一封电子邮件。

请帮忙!

标签: phpphpmailerslim

解决方案


从第一个 $message 分配中删除点:

$message = "<p>Hi there! Your advert, <strong>{$ad->title}</strong>, has just `enter code here`expired on {$this->app_name}!</p>";

推荐阅读