我有一个页面,允许用户通过输入他们的电子邮件地址来订阅我的邮件列表。在他们单击 SUBMIT 按钮后,电子邮件地址会 POST 到一个 txt 文件,该文件会在每次有人订阅时自动填充。这个页面工作得很好。
我的问题是成功地向该 txt 文件中的电子邮件地址列表发送了一封电子邮件。我测试了代码,但它卡在“正在发送消息...”上,但没有通过。
我该如何解决?
<?
error_reporting(1);
//#############################################################
//################# CONFIGURATION ##########################
//#############################################################
// choose a password
$my_password="1234";
// the email from which emails are sent
$from_email="Name <name@gmail.com>";
// Your replay to email (whatever you want).
$replyto="name@gmail.com";
// A message to be attached to the bottom of the message
// We recommend to add a link to subscription page
$message_at_bottom="
------------------------------------------------------------
P.D.: To remove from this list go to...
http://www.domain.com/Dating/dwh-emaillist.php/
";
$emails_file="emaillist-XXXXXXXXX.txt";
//#############################################################
//############### END CONFIGURATION ########################
//#############################################################
// IF INFO IS NOT POSTED, PRINT THE FORM AND DIE
if (!$_POST["message"]){
print_form();
die();
}
// IF INFO IS POSTED YOU WILL BE HERE
// Check whether the password is correct
// (only webmaster is supposed to know the password, which has been specified above)
if ($_POST["p"]!=$my_password){die("Incorrect password");}
// Get the subject of message
$subject =$_POST["subject"];
// Get the body of message
$message=$_POST["message"];
// Add to body of message the bottom
$message.=$message_at_bottom;
// Read the file with emails to variable $emails_file
$emails_file=file_get_contents($emails_file);
// Extract list of emails to array $emails_array
preg_match_all("/<.{0,100}?>/", $emails_file, $emails_array);
// Start output
print "<b>Sending messages...</b>";
// Send email to each email
foreach ($emails_array[0] as $email){
// remove "<" and ">" from each email
$email=substr($email,1,strlen($email)-2);
// Next line is the one sending the email: the key command of this script
mail ($email, $subject, $message,"From: $from_email\nReply-To: $replyto\nContent- Type: text/plain");
// Each time an email is send, output it
print "<br>$email\n";
// After sending each email, send previous line (the email) to the browser
flush();
}
?>
<?php
// THIS FUNCTION WILL SHOW THE FORM
// MODIFY IT AS REQUIRED
function print_form(){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>My email list</title>
</head>
<body style="background-color: rgb(255, 255, 255);">
<center>
<h2>Form to send email to the mailing list</h2>
<table style="font-family: times new roman;" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align: top;">
<form method=POST action="dwh-emaillist-sendmessage.php">
Subject
<br><input type=text name=subject size=40>
<br>Message
<br><textarea name=message cols=50 rows=8></textarea>
<br>Password <input type=password name=p size=10>
<br><input type=submit value=Send>
</form>
</td>
</tr>
</tbody>
</table>
</center>
</body>
</html>
<? } ?>