скрипт отправки электронной почты php не отправляет почту - PullRequest
0 голосов
/ 16 июня 2011

Ниже приведен мой сценарий для отправки запроса электронной почты. Адрес электронной почты получателя был сохранен в базе данных, называемой пользователями. Этот сценарий не будет работать должным образом. Я думаю, что проблема в разделе электронной почты получателя. Потому что, когда я использовал электронную почтуадрес вместо $ user будет работать ..

спасибо, помогите мне

<?php
$refno = $HTTP_POST_VARS['refno'];
$proid = $HTTP_POST_VARS['proid'];
$name = $HTTP_POST_VARS['name'];
$email = $HTTP_POST_VARS['email'];
$msg = $HTTP_POST_VARS['msg'];

//connect db and find email address related to id
include 'db_connector.php';
$id=$HTTP_POST_VARS['id'];
$query=mysql_query("SELECT user_email FROM users WHERE id='".$id."'");
$cont=mysql_fetch_array($query);
$user=$cont['user_email'];  

// recipient name
$recipientname = "'".$name."'";

// recipient email
$recipientemail = $user ;


// subject of the email sent to you
$subject = "Inquiry for your advertisement No. (".$refno.")";

// send an autoresponse to the user?
$autoresponse = "no";

// subject of autoresponse
$autosubject = "Thank you for your inquiry!";

// autoresponse message
$automessage = "Thank you for your inquiry.! We'll get back to you shortly.

";

// END OF NECESSARY MODIFICATIONS


$message = "reference number : $refno

$msg

From $name $email 

---"; 


// send mail and print success message
mail($recipientemail,"$subject","$message","From: $recipientname <$email>");

if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($email,"$autosubject","$automessage","From: $recipientname <$recipientemail>");
}

header("Location:index.php");
exit;

?>

Ответы [ 3 ]

1 голос
/ 16 июня 2011

Прежде всего, ваш запрос вводится SQL.Никогда не передавайте переменную, поступающую из запроса POST, непосредственно в запрос SQL.Используйте mysql_real_escape().

Что касается вашей ошибки: похоже, что $user не содержит действительного адреса электронной почты.поэтому запрос Mysql не возвращает адрес электронной почты.

Используйте $ _POST вместо $ HTTP_POST_VARS.

Включите отчеты об ошибках, добавив две эти строки в ваш PHP-код:

PHP код:

error_reporting(E_ALL);
ini_set('display_errors','1');

Запустите ваш скрипт снова.Получаете ли вы какие-либо уведомления или предупреждения?

Если нет, попробуйте отобразить свой запрос, добавив

die($query);

непосредственно перед строкой, в которой есть команда mysql_query, а затем выполните командузапросите вручную (например, используя PhpMyAdmin или MySQL Query Browser), чтобы увидеть, действительно ли вы получаете результат, похожий на адрес электронной почты.

0 голосов
/ 17 июня 2011

Привет, ребята, спасибо за помощь. Я обнаружил ошибку в своей форме запроса. Идентификационный файл скрыт за пределами тега формы. Поэтому значение идентификатора не будет передано в sendinq.phpя изменяю это спасибо, теперь опция sendmail работает правильно

0 голосов
/ 16 июня 2011

Отладка вашей PHP-программы.

Выезд:

  • Если переменные содержат предполагаемые значения.
  • Запрос в порядке и возвращает результат.
  • Правильный заголовок установлен с помощью функции mail.
  • и т. Д.

Руководство по PHP есть хороший пример отправки почты.

Не используйте $HTTP_POST_VARS['name']; устарело, вместо этого используйте $_POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...