Я пытаюсь сделать массовый отправитель электронной почты для наших пользователей на небольшом локальном сайте classfieds.PHP массовая рассылка почтового сценария
Идеи: Я использую upload.html загрузить emails.txt файла со списком писем, разделенным на каждую строке
После upload.html формы получает обрабатывается doskaosender.php, он считывает файл и и место его в локальном каталоге необходимо обработать на следующем шаге. Затем я перехожу к send.html, введите тему, from, replyTo и сообщение и нажмите SEND, это будет обработано send.php. В send.php я создаю функцию doskaosendmail, которая принимает тему, from, replyTo и сообщение и отправляет одно электронное письмо.
Затем я просто зацикливаю чтение email.txt, беру каждую строку за строкой и передаю eamil одной функции doskaosendmail отправителя.
Но у меня есть ошибка в send.php, что-то пошло не так, и я не могу сказать, что именно.
Код.
upload.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Upload Emails</title>
</head>
<body>
<h2><p><b> UPLOAD emails.txt file </b></p></h2>
<form action="doskaosender.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Upload"><br>
</form>
</body>
</html>
он идет к doskaosender.php
<?php
// check if file uploaded
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// check if there's already such file
if(file_exists('emails.txt')){
chmod('emails.txt',0755); //Change the file permissions if allowed
unlink('emails.txt'); // if there's, then remove the file
}
// if uploaded successfully we move the file
// from temp dir to the final
move_uploaded_file($_FILES["filename"]["tmp_name"], "/home/u210471985/public_html/_misc/doskaosender/".$_FILES["filename"]["name"]);
} else {
echo("Error of uploading the file");
}
/* HANDLE and READ FILE UPLOADED */
echo "The list of emails to be processed: <br>";
$fh = fopen('emails.txt','r');
while ($line = fgets($fh)) {
echo($line);
}
fclose($fh);
?>
тогда мы идем к send.html ввести сообщение, которое будет отправлено massevily
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>SEND</title>
</head>
<body>
<!--// $to, $subject, $message, $from, $replyTo-->
<h3> SCRIPT DOSKAOSENDER V0.1 beta </h3>
<form action="send.php" method="post">
<input type="text" name="subject" placeholder="subject"/> <br>
<input type="text" name="from" placeholder="from whom (email)"/> <br>
<input type="text" name="replyTo" placeholder="reply to"/> <br>
<textarea name="message" placeholder="text of email">
</textarea> <br>
<input type="submit" value="START SENDING"/> <br>
</form>
</body>
</html>
затем он получает обрабатывается send.php
<?php
echo "Let's start sending! <br>";
if(isset($_POST["subject"]) &&
isset($_POST["from"]) &&
isset($_POST["replyTo"]) &&
isset($_POST["message"])
)
{
echo "The form fullfilled correctly sending process has been started. ";
// we open the file emails.txt to get the emails
$fh = fopen('emails.txt','r');
while ($toEmail = fgets($fh)) {
$send = doskaosendmail($toEmail,$_POST["subject"],$_POST["message"],$_POST["from"], $_POST["replyTo"]);
if($send){
echo "Email has been sent to: " . $toEmail . "<br>";
} else { echo "<b> FAILED TO SEND email to: " . $toEmail . "</b><br>"; }
}
fclose($fh);
}else{
echo "Error of sending process";
}
function doskaosendmail($to, $subject, $message, $from, $replyTo)
{
$headers = 'From: ' . $from . "\r\n" .
'Reply-To: ' . $replyTo . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}
?>
так что я получил после обработки send.php и ошибки «Ошибка процесса отправки» (последняя ветвь сценария).
Пожалуйста, помогите мне найти, что не так?
Вы должны сузить проблему (и код). – jeroen
Используйте [основные методы отладки] (http://blog.teamtreehouse.com/how-to-debug-in-php), чтобы сузить проблему. Как только вы обнаружите проблему, если вы не можете ее решить, укажите минимальное количество кода относительно проблемы и опишите, что вы сделали, чтобы попытаться ее решить. – Styphon
, очевидно, что одного или нескольких ваших сообщений нет (или их значение равно false). попробуйте 'var_dump ($ _ POST)' и посмотрим, чего не хватает. – Burki