![](/img/trans.png)
[英]PHPMailer - Sending multiple emails to addresses stored in the mySQL database
[英]Sending emails to number of email addresses stored in database
我想使用某些查询将电子邮件发送到数据库中存储的电子邮件地址数量,该查询仅将电子邮件发送给其域将在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!!";
}
}
当您引用$ domain_list-> email时; 您确定$ domain_list是对象而不是关联数组吗? 您是否尝试过使用$ domain_list ['email']代替?
正常的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个日期或日期时间表达式并获得间隔。
您基本上需要DATEDIFF()
DATEDIFF()返回expr1 – expr2,表示为从一个日期到另一个日期的天数。 > expr1和expr2是日期或日期和时间表达式。 在计算中仅使用值的日期部分。
然后您的查询将是
$query ="select email from domain_detail where DATEDIFF(expiry_date, curdate() = 5)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.