【问题标题】:Customize Body of SMTP Mail Script自定义 SMTP 邮件脚本正文
【发布时间】:2016-03-28 22:29:36
【问题描述】:

我有一个基本的 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";


?>

【问题讨论】:

  • 您使用的 PHPMailer 版本非常老旧且漏洞百出。 Get the latest。此外,您的代码应基于 PHPMailer 提供的示例,而不是您找到的随机过时的示例。

标签: php smtp phpmailer html-email


【解决方案1】:

您在尝试使用它们设置 $mail-&gt;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-&gt;AddAddress = ("info@gmail.com","John Doe"); 会起作用,不确定...

..也许它确实如此!我的回答中的上述方式肯定可以通过 xD 工作!

【讨论】:

  • 还是报错:( 但是现在报错信息说 "$mail->Body = (".$arrival_date.",..." 行有问题。
  • 耐心等待。
  • 完成,我通过将所需变量连接在一起创建了一个消息变量,在似乎没有放置 " 之前,但我认为这种方式可以清楚地看到正在发生的事情。
  • 这是错误的 $mail->AddAddress("info@gmail.com","John Doe");它需要是 $mail->AddAddress = ("info@gmail.com","John Doe");
  • sitepoint.com/sending-emails-php-phpmailer : AddAddress 是 $mail->addAddress("recepient1@example.com", "Recepient Name");而 $mail->From = "from@yourdomain.com";等等。一个是单个值,而其他的则是一个数组。
【解决方案2】:

您遇到了什么错误?它从哪里开始产生错误? $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>";

【讨论】:

  • 这是错误的。 addAddress 是一个方法,而不是一个属性。
猜你喜欢
  • 2020-10-30
  • 2012-10-30
  • 2023-03-11
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多