2014-02-14 3 views
1

Мне нужно отправить электронное письмо пользователю, чтобы уведомить об истечении срока их действия.Отправить письмо с помощью php, mysql

Код, который я установил до сих пор, но он не отправляет электронное письмо и не содержит сообщений об ошибках через браузер, может ли кто-нибудь сказать мне, где я ошибаюсь.

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
include 'connect_mobile.php'; 
/* 
$today = $_POST['reportdate']; 
$name = $_POST['engineername']; 
$engineerid = $_POST['engineerid']; 
$engineeremail = $_POST['engineeremail']; 
*/ 
$today = '2013-03-14'; 
$name = 'John Wheeler'; 
$engineerid = '130'; 
$engineeremail = '[email protected]'; 


$to = $engineeremail; 
$subject = "Report expiring 30 days"; 

// give your message the starting string 
$message = 'Greetings '.$name.', 

    you are receiving this email as a reminder that the following reports expire in 30 days: 
    <table style="width: 80%;"> 
     <tr> 
      <td>Report No</td> 
      <td>Client</td> 
      <td>Property Address</td> 
      <td>Address</td> 
      <td>Address</td> 
      <td>Postcode</td> 
      <td>Expiry Date</td> 
     </tr> 
' 
$query = "SELECT * FROM certifs WHERE currentdate = '"$today"' AND userid = '"$engineerid"'" 
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    $message .= "  <tr>"; 
    $message .= "   <td>".$row['certno']."</td>"; 
    $message .= "   <td>".$row['clientcompany']."</td>"; 
    $message .= "   <td>".$row['propertyadd1']."</td>"; 
    $message .= "   <td>".$row['propertyadd2']."</td>"; 
    $message .= "   <td>".$row['propertyadd3']."</td>"; 
    $message .= "   <td>".$row['propertypostcode']."</td>"; 
    $message .= "   <td>".$row['currentdate']."</td>"; 
    $message .= "  </tr>"; 

    // then update the message with the ending 
    $message .= " 
    </table> 

    Thank you, 
    John Wheeler Gas Reports." 

} 
//-- The headers will let us send HTML code as an email 
$headers = "From: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 


//-- if mail gets sent, return true, else return false. 
if (mail($to,$subject,$message,$headers)) 
{ 
$response = array('mail' => true); 
} 
else 
{ 
$response = array('mail' => false); 
} 

echo json_encode($response); 

} 
?> 

HI, спасибо всем за указание на мои глупые ошибки, я исправил синтаксис теперь по крайней мере я получаю сообщение об ошибке.

Warning: mysql_query(): Access denied for 'user'johnny'@'localhost' (using password:NO) in /var/www/vhosts/vvps-835282.dailyvps.co.uk/john-wheeler.co.uk/mobilereports/reportexpires.php on line 35 Warning: mysql_query(): A link to the server could not be established in /var/www/vhosts/vvps-835282.dailyvps.co.uk/john-wheeler.co.uk/mobilereports/reportexpires.php on line 35 Access denied for user 'johnny'@'localhost' (using password: NO) 

Как, черт возьми, я форматирую код? Извините первый раз за StackOverflow.

Код на моем VPS, у меня есть другие почтовые сценарии, работающие нормально, используя почту.

+0

Если вы выводите '$ в',' $ subject', '$ message' и '$ headers' на экране, каковы они? –

+0

У вас есть почтовый сервер? – Salman

+0

попробуйте настроить страницу, которая просто вызывает функцию mail(), чтобы проверить правильность настройки сервера. –

ответ

1
$message = 'Greetings '.$name.', 

    you are receiving this email as a reminder that the following reports expire in 30 days: 
    <table style="width: 80%;"> 
     <tr> 
      <td>Report No</td> 
      <td>Client</td> 
      <td>Property Address</td> 
      <td>Address</td> 
      <td>Address</td> 
      <td>Postcode</td> 
      <td>Expiry Date</td> 
     </tr> 
' 

Вам не хватает ; в конце этого. Вы не получаете сообщений об ошибках, поскольку это синтаксическая ошибка.

и в конце этой линии

$query = "SELECT * FROM certifs WHERE currentdate = $today AND userid = $engineerid" 
+0

HI, спасибо исправил синтаксис, по крайней мере, я получаю сообщение об ошибке. Предупреждение: mysql_query(): доступ запрещен для user'johnny '@' localhost '(с использованием пароля: нет) в /var/www/vhosts/vvps-835282.dailyvps.co.uk/john-wheeler.co.uk /mobilereports/reportexpires.php в строке 35 Предупреждение: mysql_query(): ссылка на сервер не может быть установлена ​​в /var/www/vhosts/vvps-835282.dailyvps.co.uk/john-wheeler.co.uk/ mobilereports/reportexpires.php в строке 35 Доступ запрещен для пользователя johnny '@' localhost '(с использованием пароля: НЕТ)' – user3310743

+0

Вы не заходите на свой сервер MySQL –

0

Try это, у вас есть несколько ошибок в

$query = "SELECT * FROM certifs WHERE currentdate = '"$today"' AND userid = '"$engineerid"'" 
                ....^ 

Пропущенный добавить ; в некоторых местах, я исправил то же самое и использование ниже одного,

Заменить:

// give your message the starting string 
    $message = 'Greetings '.$name.', 

     you are receiving this email as a reminder that the following reports expire in 30 days: 
     <table style="width: 80%;"> 
      <tr> 
       <td>Report No</td> 
       <td>Client</td> 
       <td>Property Address</td> 
       <td>Address</td> 
       <td>Address</td> 
       <td>Postcode</td> 
       <td>Expiry Date</td> 
      </tr> 
    '; 
    $query = "SELECT * FROM certifs WHERE currentdate = '$today' AND userid = '$engineerid'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) { 
     $message .= "  <tr>"; 
     $message .= "   <td>".$row['certno']."</td>"; 
     $message .= "   <td>".$row['clientcompany']."</td>"; 
     $message .= "   <td>".$row['propertyadd1']."</td>"; 
     $message .= "   <td>".$row['propertyadd2']."</td>"; 
     $message .= "   <td>".$row['propertyadd3']."</td>"; 
     $message .= "   <td>".$row['propertypostcode']."</td>"; 
     $message .= "   <td>".$row['currentdate']."</td>"; 
     $message .= "  </tr>"; 

     // then update the message with the ending 
     $message .= " 
     </table> 

     Thank you, 
     John Wheeler Gas Reports."; 
    } 
0
<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
include 'connect_mobile.php'; 
/* 
$today = $_POST['reportdate']; 
$name = $_POST['engineername']; 
$engineerid = $_POST['engineerid']; 
$engineeremail = $_POST['engineeremail']; 
*/ 
$today = '2013-03-14'; 
$name = 'John Wheeler'; 
$engineerid = '130'; 
$engineeremail = '[email protected]'; 


$to = $engineeremail; 
$subject = "Report expiring 30 days"; 

// give your message the starting string 
$message = 'Greetings '.$name.', 
    you are receiving this email as a reminder that the following reports expire in 30 days: 
    <table style="width: 80%;"> 
     <tr> 
      <td>Report No</td> 
      <td>Client</td> 
      <td>Property Address</td> 
      <td>Address</td> 
      <td>Address</td> 
      <td>Postcode</td> 
      <td>Expiry Date</td> 
     </tr> 
'; 
$query = "SELECT * FROM certifs WHERE currentdate = '".$today."' AND userid = '".$engineerid."'"; 
$result = mysql_query($query) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    $message .= "  <tr>"; 
    $message .= "   <td>".$row['certno']."</td>"; 
    $message .= "   <td>".$row['clientcompany']."</td>"; 
    $message .= "   <td>".$row['propertyadd1']."</td>"; 
    $message .= "   <td>".$row['propertyadd2']."</td>"; 
    $message .= "   <td>".$row['propertyadd3']."</td>"; 
    $message .= "   <td>".$row['propertypostcode']."</td>"; 
    $message .= "   <td>".$row['currentdate']."</td>"; 
    $message .= "  </tr>"; 

    // then update the message with the ending 
    $message .= " 
    </table> 

    Thank you, 
    John Wheeler Gas Reports."; 

} 
//-- The headers will let us send HTML code as an email 
$headers = "From: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 


//-- if mail gets sent, return true, else return false. 
if (mail($to,$subject,$message,$headers)) 
{ 
$response = array('mail' => true); 
} 
else 
{ 
$response = array('mail' => false); 
} 

echo json_encode($response); 
?> 

У вас много проблем с синтаксисом ... возможно, но это.

0

, если у вас есть настройка почтового сервера, то добавьте в ваш файл php.ini

sendmail_path = /usr/sbin/sendmail -t -i 

для систем Linux/Unix

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