ホームページ  >  記事  >  バックエンド開発  >  マスター!マスター!ぜひ入ってみてください!煩雑なメールを解決する特集!

マスター!マスター!ぜひ入ってみてください!煩雑なメールを解決する特集!

WBOY
WBOYオリジナル
2016-06-13 13:45:01801ブラウズ

マスター! !マスター! !ぜひ入ってみてください! !複雑なメールに関する機能です!!!
1 週間ずっと取り組んでいますが、まだ終わっていません。この週末は残業しましたが、まだ成果がありません。専門家からアドバイスをいただければ幸いです。 ! ! !前もって感謝します! ! !

要件:
複数のリマインダーを含む契約モジュールを作成します。現在、リマインダーを 2 つだけ作成しています。

つまり、
sdate または edate が検出され、現在のシステム時刻 (2008-7-19) と同じである限り、電子メールはその電子メール アドレスに送信される必要があります。

データベース設定:
sdate edit email name
2008-7-11 2008-7-19 adfd@aa.com adfd
2008-7-15 2008-7-19 bbcc@aa。 com bbcc

2008-7-19 2008-7-22 xxbb@aa.com xxbb
2008-7-19 2008-7-28 ccbb@aa.com ccbb



基本的な実装アイデア:

今回は phpmailer クラスを使用してこれを実行します。 (環境は linux+apache+php+mysql です)

cron.php ファイルを作成します (次のように)、crontab を使用して cron.php ページを 1 日 1 回更新します

Judge現在のシステム 時刻は 2008-7-19 と一致しています。一致している場合は、メールを送信してください
上記のデータによると、sdate 2008-7-19 と edit 2008-7 が 2 つあることが検出されます。 -19 なので、これら 4 人のユーザーに 4 つの電子メールを送信する必要があります。


私のプログラムには問題があります。一度に 1 つのレコードしか取得せず、このレコードにのみ電子メールを送信しますが、他の 3 つのレコードはリマインダーを達成できません。 ;

非常に緊急です、助けてください。 ! !どうもありがとうございます! !



//cron.php のファイルは次のとおりです。

date_default_timezone_set('Asia/Shanghai'); datesy=date ("Y-m-d"); //現在のシステム時刻

//$format="%s%s %s%s%s%s";

$db =mysql_connect( 'localhost','root','');
mysql_select_db('test',$db);
$sql="sdate,edate,email,name を testmail から選択します";および edate フィールドはそれぞれデータベース内の 2 つの期間に対応します。
mysql_query("set names gb2312");
$result=mysql_query($sql,$db);

while ($row) = mysql_fetch_array($result ))
{


printf ($format,$row[0],$row[1],$row[2],$row[3],$ row[4], $row[5]);


if($datesy==$row[0] || datesy==$row[1]) //現在: ページ固定点で更新されるため、プログラムは編集時刻である $row[1] のみを検出し、2008--7 の時点で 2 つ以上の編集がある場合は 1 つだけを取得してメールを送信します。 -19、メールは送信されません。私の目的は次のとおりです。sdate、date が 100 行のデータでも、現在時刻と一致している限り、電子メールが送信されます。
{

require("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();
$address=$row[1];

$mail->IsSMTP(); // SMTP を使用するようにメーラーを設定します
$mail->Host = "mail.aaa.com.cn" // メイン サーバーとバックアップ サーバーを指定します
$mail->SMTPAuth = true; // SMTP 認証をオンにする
$mail->Username = "Josh" // SMTP ユーザー名
$mail->Password = "password"; SMTP パスワード

$mail->From = "Josh@aaa.com.cn";
$mail->FromName = "Mailer";
$mail->AddAddress(" $address", "Josh Adams");
$mail->AddAddress("xx@bbb.com.cn"); // 名前はオプションです
$mail->AddReplyTo("xx@bbb" .com.cn", "情報");

$mail->WordWrap = 50; // ワードラップを 50 文字に設定します
$mail->AddAttachment("/var/tmp/ file.tar.gz"); // 添付ファイルを追加
$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // オプションの名前
$mail-> IsHTML(true); // メール形式を HTML に設定します
$name="$row[2]";
$mail->Subject ="$name の有効期限が切れました";
$mail-> ;Body = "これは HTML メッセージ本文です 太字です!";
$mail->AltBody = "これは HTML 以外のメール クライアントの場合のプレーン テキストの本文です" ;

if(!$mail->Send())
{
echo "メッセージを送信できませんでした。

";
echo "メーラー エラー: " . mail->ErrorInfo;
exit;
}

echo "メッセージが送信されました";
}

// }

else
{
echo "失敗";
}

}


mysql_close(); 解決策------

キーは $address=$row[1] です
間違っています

------解決策----------------------

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。