SQLから取得した複数のアドレスにメールを送信しようとしています。私は次のスクリプトを思いついたが、運がなかった。誰かが私が間違っていた場所を指摘したり、phpmailerを使用して素晴らしい解決策を見つけたりできる場合は、使用するmail()
かsendmail
、最善の選択ではないことを知っています。
PS:監視しないアドレスを使用しているため、SMTPを使用したくありません。Do-NOT-REPLYのもの、実際にはメールサービスはまったくありません。ただし、サーバーはmail / sendmail / phpmailerをサポートしており、すべてテスト済みです。
<HTML>
<TITLE>Email Notification</TITLE>
<?php
include "subscribe/mySQL.class.php"; //Connect to SQL
if ($subject) {
$mailaddress = "[email protected]";
$query = "select email from subscribe";
$res = mysql_query($query);
$row = mysql_fetch_array($res);
while ($row) {
mail($row['email'],$subject,$text."n ","From:".$mailaddress);
$row = mysql_fetch_array($res);
}
echo "<script type='text/javascript'>";
echo "parent.location.href='welcome.php'";
echo "</script>";}
?>
<BODY>
<P ALIGN=CENTER><FONT FACE="Arial" SIZE="7" COLOR="#FF0000">Send Notifications<BR><BR></FONT>
<P ALIGN=LEFT><FORM NAME="email" ACTION="test.php" METHOD="POST">
<FONT FACE="Arial" SIZE="6" COLOR="#0000FF">Subject:<INPUT TYPE=TEXT NAME="subject" SIZE="50" MAXLENGTH="18" value=<?php echo $subject ?>><BR><BR>
Content: <TEXTAREA NAME="text" COLS="90" ROWS="3" value="<?php echo $text?>"> </TEXTAREA><BR><BR>
</FONT>
<INPUT TYPE=SUBMIT VALUE=Send Email></FORM>
</BODY>
</HTML>
電子メールが送信されたことを確認するために何も印刷しないため、何も表示されません。
mysql_fetch_array()の代わりにmysql_fetch_assoc()を使用してみて、それがどのように機能するかを確認してください。
//Sorry, but I am a fan of mysql_fetch_assoc
//$row = mysql_fetch_array($res);
while ($row = mysql_fetch_assoc($res)) { //Here is my main change
if (mail($row['email'],$subject,$text."n ","From:".$mailaddress)) {
echo '<hr>Message sent to: '.$row['email'].'<br>'; //Just to see that it was sent.
}
//$row = mysql_fetch_array($res); //Since I put this in the while test
}
このmail()
関数はブール値を返すので、その値をテストして何かを印刷し、メールが正常に送信されたかどうかを確認できるようにします。
これが問題ではない場合はお知らせください。そうすれば、この回答を削除するか、それに応じて編集することができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加