【问题标题】:how to make phpmailer code more simple it use to send 2 mails如何使 phpmailer 代码更简单,用于发送 2 封邮件
【发布时间】:2013-11-24 22:50:29
【问题描述】:

我有 php 代码使用 phpmailer 向两个用户发送两条不同的消息。我复制了两次代码以发送两封邮件,但这使得该过程需要很长时间才能完成任务。有什么办法可以让我的代码更简单

//// -------------------- 发送电子邮件。给学生顾问---------------------------------------------------------- ------------ 要求(“phpmailer/class.phpmailer.php”); $mail = new PHPMailer();

$mail->Username = "rms@gmail.com"; 
$mail->Password = "12121212"; 
$mail->AddAddress($advisoremail);
$mail->FromName = "RMS-NCT";

$mail->Subject = "New Request from: ".$_SESSION['UID'];
$mail->Body    = "Dear Mr. Adviser you have got new request from 26s12115 ... click here to access it. http://localhost/rms/"; 
//-----------------------------------------------------------------------

$mail->Host = "ssl://smtp.gmail.com"; 
$mail->Port = 465;
$mail->IsSMTP(); 
$mail->SMTPAuth = true;
$mail->From = $mail->Username;
if(!$mail->Send())
    echo "Mailer Error: " . $mail->ErrorInfo;
else
    echo "Message has been sent";

// ------------向学生发送电子邮件 ----------

$mail = new PHPMailer();
$mail->Username = "rms@gmail.com"; // your GMail user name
$mail->Password = "12121212"; 
$mail->AddAddress($_SESSION['UEMAIL']);
$mail->FromName = "RMS-NCT";

$mail->Subject = "Receipt for your new Request";
$mail->Body    = "Dear Student .. Your request has been sent.. you will get response as soon as possible."; 
//-----------------------------------------------------------------------

$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->From = $mail->Username;
if(!$mail->Send())
    echo "Mailer Error: " . $mail->ErrorInfo;
else
    echo "Message has been sent";   

【问题讨论】:

  • 这里有什么不简单的?代码可读性很强。

标签: php


【解决方案1】:

只要你有两个不同的主题和身体,我会说不。没有办法简化此任务。 但是您可以将任务放在一个函数中,该函数获取不同的参数。所以你只需要调用一个函数。

require("phpmailer/class.phpmailer.php"); 

function send_mail($email, $subject, $body) {
    $mail = new PHPMailer();

    $mail->Username = "rms@gmail.com"; 
    $mail->Password = "12121212"; 
    $mail->AddAddress($email);
    $mail->FromName = "RMS-NCT";

    $mail->Subject = $subject;
    $mail->Body    = $body; 
    //-----------------------------------------------------------------------

    $mail->Host = "ssl://smtp.gmail.com"; 
    $mail->Port = 465;
    $mail->IsSMTP(); 
    $mail->SMTPAuth = true;
    $mail->From = $mail->Username;
    if(!$mail->Send())
        echo "Mailer Error: " . $mail->ErrorInfo;
    else
        echo "Message has been sent";
}

【讨论】:

  • 您好,先生,感谢您的帮助。我已经完成了您的更改,但该过程仍然需要很长时间才能完成任务。为什么??
  • 这不是针对更快运行时间的优化。只是为了更好地阅读代码。多久时间?是只发送到 2 个电子邮件地址,还是发送到 2 个以上?
  • 它只发送到 2 封电子邮件,需要 15 秒
  • 15 秒似乎很长。但是我不知道对外部邮件服务器的响应时间有多长。另一方面,您可以尝试从send_mail 方法中创建$mail = new PHPMailer() 并将其也作为参数。
  • 我还是遇到了同样的问题。我想我必须改变 phpmailer。
【解决方案2】:
require("phpmailer/class.phpmailer.php");
function sendMail($to = "trash@domain.com", $subject = "", $body = "", $from = "RMS-NCT")
{
     $mail = new PHPMailer();
     $mail->Host = "ssl://smtp.gmail.com";
     $mail->Port = 465;
     $mail->IsSMTP();
     $mail->SMTPAuth = true;
     $mail->Username = "rms@gmail.com";
     $mail->Password = "12121212";

     $mail->From = $mail->Username;
     $mail->FromName = $from;
     $mail->AddAddress($to);
     $mail->Subject = $subject;
     $mail->Body = $body;

     if(!$mail->Send()) {
          return false;
     }

     return true;
}

在代码中,像这样:

$Address = $advisoremail;
$Subject = "New Request from: " . $_SESSION['UID'];
$Body = "Dear Mr. Adviser ...";
if (sendMail($Address, $Subject, $Body)) {
    echo "Message has been sent";
} else {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多