2015-06-15 2 views
-1

Я пытаюсь сделать массовый отправитель электронной почты для наших пользователей на небольшом локальном сайте 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 и ошибки «Ошибка процесса отправки» (последняя ветвь сценария).

Пожалуйста, помогите мне найти, что не так?

+2

Вы должны сузить проблему (и код). – jeroen

+0

Используйте [основные методы отладки] (http://blog.teamtreehouse.com/how-to-debug-in-php), чтобы сузить проблему. Как только вы обнаружите проблему, если вы не можете ее решить, укажите минимальное количество кода относительно проблемы и опишите, что вы сделали, чтобы попытаться ее решить. – Styphon

+0

, очевидно, что одного или нескольких ваших сообщений нет (или их значение равно false). попробуйте 'var_dump ($ _ POST)' и посмотрим, чего не хватает. – Burki

ответ

0

Ваша функция не вернуть любую вещь, поэтому вы получаете ошибки, пожалуйста, исправить эту функцию для этого doskaosendmail

function doskaosendmail($to, $subject, $message, $from, $replyTo) { 
     $headers = 'From: ' . $from . "\r\n" . 
       'Reply-To: ' . $replyTo . "\r\n" . 
       'X-Mailer: PHP/' . phpversion(); 

     if (@mail($to, $subject, $message, $headers)) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
+0

спасибо, это сработало! – JavaJedi

+0

a ah, извините, не работал. Все еще дает ошибку ... – JavaJedi

+0

@JavaJedi какова ошибка сейчас? –

Смежные вопросы