マスター! !マスター! !ぜひ入ってみてください! !複雑なメールに関する機能です!!!
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 までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31