2013-07-16 4 views
0

Ниже приведено поле HTML Select, которое получает все электронные письма из моей базы данных. Теперь я пытаюсь отправить одно или несколько писем с помощью php. Но он не отправляет никаких писем. Можете ли вы рассказать мне, что не так с моим кодом?Php email send issue

HTML код:

<tr> 
<td valign="top">To</td> 
<td> 
<select multiple="multiple" size="7" name="to[]"> 
    <?php 
     $getemail = mysql_query("SELECT email FROM clients"); 
     while($res = mysql_fetch_array($getemail)){ 
     $email = inputvalid($res['email']); 
     echo "<option value='$email'>$email</option>"; 
     } 
    ?>s 
</select> 
</td> 
</tr> 

Php Код:

foreach($to as $total){     
$total; 
$headers = "From: $from\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$mail = mail($total, $subject, $msg, $headers); 
}      

Update-Полный код:

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" /> 
<table width="400" border="0" cellspacing="10" cellpadding="0" style="float:left;  
position:relative;"> 
<tr> 
<td>Subject</td> 
<td><input type="text" name="subject" value="<?php if(isset($_POST['subject'])) echo 
$_POST['subject']; ?>" class="tr"/></td> 
</tr> 
<tr> 
<td valign="top">Message</td> 
<td><textarea name="msg" class="textarea_email"><?php if(isset($_POST['msg'])) echo 
$_POST['msg']; ?></textarea></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input type="submit" value="Send Message" class=" submit" name="Submit"/></td> 
</tr> 
</table> 
<table style="float:left; position:relative; border:0px #000 solid;" width="400" border="0" 
cellspacing="10" cellpadding="0"> 
<tr> 
<td valign="top">To</td> 
<td> 
<select multiple="multiple" size="7" name="to[]"> 
    <?php 
     $getemail = mysql_query("SELECT email FROM clients") or die(mysql_error());; 
     while($res = mysql_fetch_array($getemail)){ 
     $email = inputvalid($res['email']); 
     echo "<option value='$email'>$email</option>"; 
     } 
    ?>s 
</select> 
</td> 
</tr> 
</table> 
</form> 

Php код:

if(isset($_POST['Submit']) && $_POST['Submit'] == "Send Message") 

{ 
$subject = inputvalid($_POST['subject']); 
$msg = inputvalid($_POST['msg']); 
$to = $_POST['to']; 

if(isset($subject) && isset($msg) && isset($to)){ 
if(empty($subject) && empty($msg) && empty($to))  
    $err[] = "All filed require"; 
} 
else{ 
    if(empty($to)) 
     $err[] = "Please select email address"; 

    if(empty($subject)) 
     $err[] = "Subject require"; 

    if(empty($msg)) 
     $err[] = "Message require"; 


} 

if(!empty($err)) 
    { 
     echo "<div class='error'>"; 
     foreach($err as $er) 
     { 
      echo "<font color=red>$er.</font> 
<br/>";    
     } 
     echo "</div>"; 
     echo "<br/>"; 
    } 
else{ 
    foreach($to as $total){     
     echo $total; 
     $headers = "From: $from\r\n"; 
     $headers .= "Content-type: text/html\r\n"; 
     $mail = mail($total, $subject, $msg, 
$headers);      
     } 
     if($mail) 
     echo "<font color=green>Successfully sent your message. We will be get in 
touch with you. Thank You.</font/><br/><br/>"; 
     header("Refresh:10; url=email.php"); 
    } 

} 
+0

Каковы ваши ошибки? Какова стоимость '$ mail'? Вы проверили свои почтовые журналы? Это зависит от вашего почтового сервера/MTA, когда он получает входные данные из команды PHP 'mail()'. PHP просто передает его в MTA, и любые ошибки там появятся в ваших почтовых журналах (то есть до тех пор, пока они не будут отправлены, когда они будут отправлены, это зависит от принимающей MTA). Также проверьте настройки брандмауэра. – BLaZuRE

+0

@BLaZuRE Я проверил свой адрес электронной почты. У меня не было электронной почты. Нет ошибки, но это не работает. Если вы хотите, я могу показать свой полный код. –

+0

Это не так просто. PHP не отправляет почту. Он сообщает другой программе для отправки почты. Мы не знаем, есть ли у вас такая программа просто по вашему коду. Прочитайте [документацию] (http://php.net/manual/en/function.mail.php) в функции 'mail()'. Он вернет false, если ваша электронная почта не будет принята для доставки такой программой. ** PHP не отправляет почту. Он использует другую программу для отправки почты ** Вам необходимо проверить почтовые журналы такой программы (Postfix, Sendmail и т. Д.). Выведите значение '$ mail' (используя' var_dump ($ mail); 'полезно). – BLaZuRE

ответ

1

сначала убедитесь, что вы запрашиваете правильно.

Изменить следующую строку:

$getemail = mysql_query("SELECT email FROM clients"); 

в

$getemail = mysql_query("SELECT email FROM clients") or die(mysql_error()); 

Изменить следующую строку:

$total; 

в

echo $total . '<BR />'; 

Сохранить и обновить страницу Какой у вас выход?

Вы получаете сообщение об ошибке?

Вы видите адрес электронной почты?

редактировать:

изменить строку

$mail = mail($total, $subject, $msg, $headers); 

в

if (!mail($total, $subject, $msg, $headers);) { 
    echo 'This is not working'; 
} 

Что ваш результат?

+0

Prevod, No нет сообщения об ошибке, и я могу видеть адрес электронной почты. –

+0

изменен мой пост – AgeDeO

+0

@LucPrevoo Я обновил свой полный код. Пожалуйста, проверь это. –

3

Вы можете отправить несколько электронных писем для одной функции почты.

Только адрес электронной почты с разделенным запятой.

как "тест @ gmail.com, test1 @ gmail.com"

1

Проверьте APACHE-конфиги! У меня была такая же проблема на моей локальной машине. как только я загрузил его на полностью настроенный веб-сервер, код начал работать!Может быть, это решает проблему, слишком

0

Некоторое время почта() функция может не работать, так что вы должны пойти с PHPMailer, для более подробной информации, чтобы использовать эту функцию, вы можете пройти хорошую документацию:

Send mail using PHPMailer