2016-05-17 4 views
1

を送信し、私は次のPHPコードを実行するcronジョブを実行しようとしています:GoDaddyはのcronジョブが一つだけのメール

<?php 
require 'public_html/db.php'; 
mysql_query("SET NAMES utf8"); 
$aa = mysql_query("SELECT * from send where sent='0' LIMIT 20"); 

while($rw = mysql_fetch_array($aa)) { 

$id = $rw ['id']; 
$email = $rw ['email']; 
$nick_sent= $rw ['nick']; 
$nick_rw = $rw ['nick_pr']; 

require 'public_html/mailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 
$mail->setFrom('[email protected]', 'Email'); 
$mail->addReplyTo('[email protected]', 'Email'); 
$mail->addAddress($email); 
$mail->IsHTML(true); 
$mail->Subject = 'Message'; 

$mail->Body = 'My message'; 

$mail->CharSet = "utf-8"; 
if ($mail->send()) { 

    mysql_query("UPDATE send SET sent = '1' WHERE id='$id'");} 
} 
?> 

私は私のブラウザ経由で直接ファイルにアクセスした場合、それは完璧に動作します。しかし、cronジョブを介して実行している場合は、whileコード... ONCEを実行するだけです。つまり、複数の行を取得して複数の電子メールを送信する必要がある場合、MySQLデータベースの最初の行を取り出して1つの電子メールを送信します。みんな助けてくれますか?ありがとう。

+0

多分、GoDaddyはcron内から複数のメールを送信できないのでしょうか?電子メールで返される行の数を入れて、実際にクエリによって返される内容を確認してください。 – BillK

+1

はサービスプロバイダによって禁止されたバルクメールかもしれません.gaskad – JYoThI

+0

requireの代わりにrequire_onceを使用してループから取り出してください –

答えて

1

コードごとに、PHPMailerオブジェクトを何度も何度も初期化しています。以下のようにコードを親切に更新してください。

<?php 
require 'public_html/db.php'; 
require 'public_html/mailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer; 
$mail->setFrom('[email protected]', 'Email'); 

mysql_query("SET NAMES utf8"); 
$aa = mysql_query("SELECT * from send where sent='0' LIMIT 20"); 

while($rw = mysql_fetch_array($aa)) 
{ 

$id = $rw ['id']; 
$email = $rw ['email']; 
$nick_sent= $rw ['nick']; 
$nick_rw = $rw ['nick_pr']; 


$mail->addReplyTo('[email protected]', 'Email'); 
$mail->addAddress($email); 
$mail->IsHTML(true); 
$mail->Subject = 'Message'; 

$mail->Body = 'My message'; 

$mail->CharSet = "utf-8"; 
if ($mail->send()) { 

    mysql_query("UPDATE send SET sent = '1' WHERE id='$id'");} 
} 
$mail->clearAddresses(); 
} 
?>