Невозможно отправить содержимое электронной почты с помощью PHPMailer

1

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

Изображение 174551

Как обеспечить правильную обработку детали заказа, как показано на рисунке ниже?

Изображение 174551

Это код phpmailer:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>PHPMailer - SMTP test</title>
</head>
<body>
<?php

//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set("Asia/Singapore");
require '../PHPMailerAutoload.php';
include ('../test.php');
//Create a new PHPMailer instance
$mail = new PHPMailer();
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = "smtp.gmail.com";

//enable this if you are using gmail smtp, for mandrill app it is not required
$mail->SMTPSecure = 'ssl';                            

//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 465;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "GMAIL.COM";
//Password to use for SMTP authentication
$mail->Password = "PASSWORD";
//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'POPO ECOMMERCE');
//Set an alternative reply-to address
$mail->addReplyTo('[email protected]', 'POPO ECOMMERCE');
//Set who the message is to be sent to
$mail->addAddress($email, $user);
//Set the subject line
$mail->Subject = 'Order Details';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('order.php'), dirname(__FILE__));
//Replace the plain text body with one created manually
//$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.png');
$mail->XMailer = ' ';

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}
?>
</body>
</html>

Код сообщения:

<?php

include("../include/db.php");

$user= $_SESSION['id'];

?>

<?php 

echo
"<div style='width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 15px;'>
<h1>Order Details</h1>
        ";  
echo
        "<p>Dear <b style='color:blue;'>$user</b>, you have ordered the following products from our website: popo.
Below are the details of your order. We will be shipping the products to your address in two weeks.
<br><br>
Thank you for using POPO. 

<Br><br><br>
Order Details: <br></p>";

echo '

<table width = "1093" align="center" bgcolor="silver">
                <tr align="center">
<th>S.N</th>
<th>Product ID</th>
<th>Invoice ID</th>
<th>QTY</th>
</tr>';

$get_pro =$db->prepare( 'select Product_ID,invoice_id,qty from orders where userid = ?');

$get_pro->bind_param('s',$user);
$get_pro->execute();
$get_pro->bind_result($pro_title,$pro_id,$pro_qty);

$i =0 ;


while ($get_pro->fetch())

{
    $i++;

?>
<?php 
                echo "

<tr align='center'>

<td>  $i</td>
<td> $pro_title</td>
<td> $pro_id</td>

<td>$pro_qty</td>

</tr>";
                ?>
<?php } ?>


<?php echo "</table>"?>
  • 0
    Покажите свой код phpmailer
  • 0
    Да, я забыл об этом ..
Теги:
email
phpmailer

3 ответа

1
Лучший ответ

file_get_content() не выполняет скрипт php. Вам необходимо заменить:

$mail->msgHTML(file_get_contents('order.php'), dirname(__FILE__));

от

ob_start();
include "order.php";
$message = ob_get_clean();
$mail->msgHTML($message);
  • 0
    ах .. я разобрался с этой строкой, но не знал, что использовать. Большое спасибо за помощь!
1

Не загружайте order.php с файлом_get_contents(), потому что это не будет выполнять PHP-код!

включите файл следующим образом:

ob_start();
include("order.php");
$message = ob_get_contents();
ob_end();

$mail->msgHTML($message);
1

Попробуйте заменить код messege на это:

    <?php

include("../include/db.php");

$user = $_SESSION['id'];

echo "<div style='width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 15px;'>
<h1>Order Details</h1>";
echo "<p>Dear <b style='color:blue;'>$user</b>, you have ordered the following products from our website: popo.
Below are the details of your order. We will be shipping the products to your address in two weeks.
<br>
<br>
Thank you for using POPO.
<Br><br><br>
Order Details: <br></p>";
echo '

<table width = "1093" align="center" bgcolor="silver">
<tr align="center">
<th>S.N</th>
<th>Product ID</th>
<th>Invoice ID</th>
<th>QTY</th>
</tr>';

$get_pro = $db->prepare('select Product_ID,invoice_id,qty from orders where userid = ?');
$get_pro->bind_param('s',$user);
$get_pro->execute();
$get_pro->bind_result($pro_title,$pro_id,$pro_qty);

$i = 0;
while ($get_pro->fetch())

{ $i++;

echo "<tr align='center'>

<td> $i</td>
<td> $pro_title</td>
<td> $pro_id</td>
<td>$pro_qty</td>
</tr>";
break;
}
echo "</table>";

?>

А по другому файлу:

$mail->msgHTML(file_get_contents('order.php'), dirname(__FILE__));

Для того, чтобы:

ob_start();
include("order.php");
$message = ob_get_contents();
ob_end();

$mail->msgHTML($message);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню