将电子邮件发送到存储在数据库中的电子邮件地址数

时间:2014-06-04 09:41:08

标签: php codeigniter email

我想使用一些查询向我的数据库中存储的电子邮件地址发送电子邮件,该查询只会在5天内向其域名过期的人发送电子邮件。我认为我的查询没有运行,也没有访问存储在“$ to”变量中的数据库中的电子邮件。但是当我在“$ to”中提供特定的电子邮件地址时,此代码会将电子邮件发送到该特定地址。但问题是我想发送电子邮件到存储在数据库中的域名将过期的电子邮件地址。这是我的模型database.php。任何帮助将不胜感激。

    database.php model:
    function sendmailto(){
    $query ="select email from domain_detail where expiry_date - curdate()=5"; 

    //$query ="select email from domain_detail where expiry_date < curdate()";


   if($query_result = $this->db->query($query)){

    foreach ($query_result->result() as $domain_list) {
        $to= $domain_list->email;
        //$to = "abcd18@gmail.com";
        $from= "ijkl23@hotmail.com";
        $subject='test cron';
        $message= '<h2> Your domain is going to be expired. Please renew it soon.';
        $headers= "From: $from\n";
        $headers .="MIME-Version: 1.0\n";
        $headers .="Content-type: text/html; charset=iso-8859-1\n";
        mail($to, $subject, $message, $headers);
    }
         if(mail($to, $subject, $message, $headers))
    {
        echo 'Message has been sent successfully.';

    }
    else
    {
        echo 'Message couldnot send. Please try again!';
    }
}
else{
    echo "No Email Address Found!!";
}


}

3 个答案:

答案 0 :(得分:0)

当您引用$ domain_list-&gt;电子邮件时;你确定$ domain_list是一个对象而不是一个关联数组吗?您是否尝试过使用$ domain_list [&#39; email&#39;]?

答案 1 :(得分:0)

正常的PHP mail()函数有时会被接收者标记为垃圾邮件。我建议尝试使用phpmailer库:https://github.com/PHPMailer/PHPMailer/tree/master

如果你使用CI,可以试试这个:

$query = $this->db->query('select email from domain_detail where expiry_date - curdate()=5');

if($query->num_rows() > 0) 
{
   foreach($query->result() as $domain_list) 
   {
      // rest of code here...
   }
}

答案 2 :(得分:0)

你不能减去2个日期或日期时间表达式并获得没有函数的间隔。

您基本上需要DATEDIFF()

  

DATEDIFF()返回expr1 - expr2,表示为从一个日期到另一个日期的天数值。 &gt; expr1和expr2是日期或日期和时间表达式。在计算中仅使用值的日期部分。

然后您的查询将

$query ="select email from domain_detail where DATEDIFF(expiry_date, curdate() = 5)";