2016-02-05 47 views
0

这个想法是当我的用户离开一天到期时自动发送邮件给我的用户。邮件为什么不自动发送?

$enviar = $datoMesPazysalvo[2] - $ayer; 
    if($enviar == 1){ 

     $nombre = $row_registroClientes['nombres'] + $row_registroClientes['apellidos']; 
     $email = $row_registroClientes['correo']; 
     $telefono = $row_registroClientes['telefono']; 

     // multiple recipients 
     $to = '[email protected]' . ', '; // note the comma 
     $to .= '$email'; 

     // subject 
     $subject = 'Fight Club Bogota, Información importante!!'; 

     // message 
     $message = ' 
     <html> 
     <head> 
      <title>Fight Club Bogota, Información importante!!</title> 
     </head> 
     <body> 
      <p>Tu matricula vence mañana $datoMesPazysalvo[2]</p> 
      <span>Ponte en contacto con nosotros para renovar</span> 
     </body> 
     </html> 
     '; 

     // To send HTML mail, the Content-type header must be set 
     $headers = 'MIME-Version: 1.0' . "\r\n"; 
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

     // Additional headers 
     $headers .= 'To: $nombres <$email>, Administrador <[email protected]>' . "\r\n"; 
     $headers .= 'From: Administrador <[email protected]>' . "\r\n"; 

     // Mail it 
     mail($to, $subject, $message, $headers); 

    } 

这是为什么不工作的原因?我想的逻辑是正确的,但我并不完全确定,如果正确。

我希望有人能帮助我。

非常感谢。

+0

什么功能调用这个例程?如果它没有被调用,它会自动执行吗? – ArrowHead

回答

0

如果不知道“$ ayer”和“$ datoMesPazysalvo [2]”的类型和值是什么,这很难说清楚。

该全片:

$enviar = $datoMesPazysalvo[2] - $ayer; 
if($enviar == 1) 

我建议你到逻辑封装成函数“shouldSendEmail”你可以单元测试,并确保你每一次得到正确的输出:

if(shouldSendEmail(){ 
... 
} 
+0

$ datoMesPazysalvo是日期,$ datoMesPazysalvo [2] =过期日期和$ ayer =过期前一天,谢谢我将尝试与shouldSendEmail() –

+1

以这种方式处理日子似乎有点危险。想想如果你的到期日是本月的第一天。如果$ ayer是本月的第31天,那么您将计算“1-31 == 1”,这显然不起作用。 如果你使用日期,你应该尝试使用包含大量函数的“DateTime”对象。或者甚至更好,如果你使用PHP 5.5+,可以使用DateTimeImmutable。 – hasumedic

+0

@ alfredohb.q是你的问题解决? – hasumedic

0

究竟是不是工作?

如果它不发送邮件...第一,如果你发送一个PHP testmail,检查它的工作原理,使用mail()函数在其最简单的形式(离开了额外的头):

mail("[email protected]","test subject line","test body"); 

(只需将电子邮件地址替换为您的电子邮件地址)。

如果它不起作用,那么您的电子邮件设施/服务(sendmail?)可能设置不正确或者配置错误。

如果它的工作,那么可能你没有正确构建你的变量。 而不是邮件()语句,插入此,再次运行你的代码,看看这些变量都OK,因为他们应该是...

var_dump($to); 
var_dump($subject); 
var_dump($message); 
var_dump($headers); 

希望这有助于...