自定义 SMTP 邮件脚本的正文

Customize Body of SMTP Mail Script

我有一个基本的 smtp 邮件脚本,效果很好,但我唯一需要的是自定义邮件正文。我试图在脚本中定义和插入值,但代码在某处给了我错误。我哪里做错了?

<?
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();                                   // send via SMTP
$mail->Host     = "mail.host.com"; // SMTP servers
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "info@host.com";  // SMTP username
$mail->Password = "123456"; // SMTP password

$mail->From     = "info@host.com"; 
$mail->Fromname = "John Doe";
$mail->AddAddress("info@gmail.com","John Doe");
$mail->Subject  =  $_POST['content'];
$mail->Body     = (".$arrival_date.", ".$arrival_pickup_location.", ".$arrival_dropoff_location.", ".$arrival_flight_number.", ".$arrival_fligth_time.", ".$arrival_dropoff_adress.", ".$phone_number.", ".$reservation_name.", ".$email_adress.", ".$country.", ".$additional_requests.");

$arrival_date = $_POST['arrival_date'];
$arrival_pickup_location = $_POST['arrival_pickup_location'];
$arrival_dropoff_location = $_POST['arrival_dropoff_location'];
$arrival_flight_number = $_POST['arrival_flight_number'];
$arrival_fligth_time = $_POST['arrival_fligth_time'];
$arrival_dropoff_adress = $_POST['arrival_dropoff_adress'];
$reservation_name = $_POST['reservation_name'];
$phone_number = $_POST['phone_number'];
$email_adress = $_POST['email_adress'];
$passenger = $_POST['passenger'];
$country = $_POST['country'];
$additional_requests = $_POST['additional_requests'];

if(!$mail->Send())
{
   echo "Mesagge not delivered <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message sent";


?>

您在尝试用变量设置 $mail->Body 对象后设置变量。

尝试:

<?php
$arrival_date = $_POST['arrival_date'];
$arrival_pickup_location = $_POST['arrival_pickup_location'];
$arrival_dropoff_location = $_POST['arrival_dropoff_location'];
$arrival_flight_number = $_POST['arrival_flight_number'];
$arrival_fligth_time = $_POST['arrival_fligth_time'];
$arrival_dropoff_adress = $_POST['arrival_dropoff_adress'];
$reservation_name = $_POST['reservation_name'];
$phone_number = $_POST['phone_number'];
$email_adress = $_POST['email_adress'];
$passenger = $_POST['passenger'];
$country = $_POST['country'];
$additional_requests = $_POST['additional_requests'];

$message = '<ul><li>' . $arrival_date . "</li>";
$message .= '<li>' . $arrival_pickup_location . "</li>";
$message .= '<li>' . $arrival_dropoff_location . "</li>";
$message .= '<li>' . $arrival_flight_number . "</li>";
$message .= '<li>' . $arrival_fligth_time . "</li>";
$message .= '<li>' . $arrival_dropoff_adress . "</li>";
$message .= '<li>' . $phone_number . "</li>";
$message .= '<li>' . $reservation_name . "</li>";
$message .= '<li>' . $email_adress . "</li>";
$message .= '<li>' . $country . "</li>";
$message .= '<li>' . $additional_requests . "</li></ul>";

require("class.phpmailer.php");    
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "mail.host.com"; // SMTP servers
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "info@host.com";  // SMTP username
$mail->Password = "123456"; // SMTP password
$mail->IsHTML(true);   
$mail->From = "info@host.com"; 
$mail->Fromname = "John Doe";
$mail->AddAddress("info@gmail.com","John Doe");
$mail->Subject = $_POST['content'];
$mail->Body = $message;   

if(!$mail->Send())
{
   echo "Mesagge not delivered <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}
echo "Message sent";
?>

此外,我认为使用 $mail->AddAddress = ("info@gmail.com","John Doe"); 行不通,不确定 ...

..也许它确实如此!我的回答中的上述方法肯定应该有效 xD!

您遇到的错误是什么?它从哪里开始产生错误? $mail->AddAddress("info@gmail.com","John Doe") 没有“=”符号。

所以它应该是:

 $mail->AddAddress = ("info@gmail.com","John Doe");

此外,您可以在正文中添加 html,这样它看起来会更漂亮一些:

    $mail->Body    = "<html><body>";
    $mail->Body   .= "<table><tbody>";
    $mail->Body   .= "<tr><td>".$arrival_date."</td></tr>";
    $mail->Body   .= "</tbody></table>";
    $mail->Body   .= "</body></html>";