2016-02-05 97 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); 

希望這有助於...