PHPメーラーをいじっているので、少し助けてもらえないかと思っています。このコードを変更しましたが、ここからhttp://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html
単一の電子メールの送信は、PHP メーラー (別のスクリプトを使用) を介して正常に機能していますが、データベースから以下のスクリプトを使用して複数の電子メールを送信しようとすると、現在機能していません..何が問題なのかを見つけることができますか? データベースからの電子メールで実際に何かを行っているかどうかは疑問ですが..少し混乱しています。
スクリプトは成功して名前を出力しますが、メールは送信しません! 少なくとも何も受信されません..(スパムでもありません)何か助けはありますか?これが非常に明白である場合は申し訳ありません!
<?php
// Grab our config settings
require_once($_SERVER['DOCUMENT_ROOT'].'/mail/config.php');
// Grab the FreakMailer class
require_once($_SERVER['DOCUMENT_ROOT'].'/mail/lib/MailClass.inc');
//set execution time limit to 5 minutes
$safeMode = ( @ini_get("safe_mode") == 'On' || @ini_get("safe_mode") === 1 ) ? TRUE : FALSE;
if ( $safeMode === FALSE ) {
set_time_limit(300); // Sets maximum execution time to 5 minutes (300 seconds)
// ini_set("max_execution_time", "300"); // this does the same as "set_time_limit(300)"
}
echo "max_execution_time " . ini_get('max_execution_time') . "<br>";
//db connection
$con = mysql_connect("xx","xx","xx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xx", $con);
// Setup body
$textBody = "Dear {MEMBER_NAME},\n\nTEST";
$htmlBody = "Dear {MEMBER_NAME},<br /><br />TEST";
// instantiate the class
$mailer = new FreakMailer();
// Get the user's Email
$sql = mysql_query("SELECT displayname,email FROM engine4_users2")or die(mysql_error());
//lets reset the time limit of the server everytime an email is sent to bypass maximum
while (1==1) {
set_time_limit(30); // sets (or resets) maximum execution time to 30 seconds)
// .... put code to process in here
while($row = mysql_fetch_object($sql))
{
// Send the emails in this loop.
$member_name = $row->displayname;
if($row->MailType == 'html')
{
$mailer->Body = str_replace('{MEMBER_NAME}', $member_name, $htmlBody);
$mailer->IsHTML(true);
$mailer->AltBody = str_replace('{MEMBER_NAME}', $member_name, $textBody);
}
else
{
$mailer->Body = str_replace('{MEMBER_NAME}', $member_name, $textBody);
$mailer->isHTML(false);
}
$mailer->Send();
$mailer->ClearAddresses();
$mailer->ClearAttachments();
$mailer->IsHTML(false);
echo "Mail sent to: " . $member_name . "<br />";
}
usleep(1000000); // sleep for 1 million micro seconds - will not work with Windows servers / PHP4
// sleep(1); // sleep for 1 seconds (use with Windows servers / PHP4
if (1!=1) {
break;
}
}
?>