php – 为什么SwiftMailer会发送两封电子邮件?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 为什么SwiftMailer会发送两封电子邮件?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我通过 PHP的SwiftMailer库发送邮件.我有这个PHP代码从1个发件人向1个电子邮件收件人发送1封电子邮件.这是代码

$email = /*some email recipient*/;

$sendEmail = /*sender's email*/;
$sendName = /*sender's name*/;
$subject = /*email subject*/;
$body = /*email body*/;

//Create the message
//Create the Transport
$transport = Swift_SmtpTransport::newInstance('/*mail host*/',/*port*/)
->setUsername('/*some username*/')
->setPassword('/*some password*/')
;

//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

//Create a message
$message = Swift_Message::newInstance($subject)
->setFrom(array($sendEmail => $sendName))
->setTo($email)
->setBody($body,'text/htML')
;

//Send the message
$result = $mailer->send($message);

每次我运行此代码时,它都会将该发件人的电子邮件发送给该主题和正文的电子邮件.两个完全相同的电子邮件.知道为什么吗?

更新 – 这是完整的代码

这是整个页面

<?PHP

ob_start();
session_start();

require_once ('config.PHP');
require_once 'swiftmailer/lib/swift_required.PHP';
include ('functions.PHP');
require_once (MysqL);

sendConfirmation(12,3,$dbc);

ob_end_flush();
?>

这是在页面中引用的函数(位于functions.PHP文件中:

function sendConfirmation($signup_id,$app_id,$dbc){

    //get signup email and ref code
    $q = "SELECT email,ref_code From sign_ups WHERE (signup_id='$signup_id')";
    $r = MysqLi_query ($dbc,$q) or trigger_error("Query: $q\n<br />MysqL Error: " . MysqLi_error($dbc));

    $email;
    $ref;

    if (MysqLi_num_rows($r) == 1){
        $row = MysqLi_fetch_array($r,MysqLI_ASSOC);
        $email = $row['email'];
        $ref = $row['ref_code'];
    }

    //get app info (subject,email body,sender email,sender name)
    $q = "SELECT bsignuPEmail_subj,bsignup_email,email,name,bsignup_url FROM apps WHERE (app_id='$app_id')";
    $r = MysqLi_query ($dbc,$q) or trigger_error("Query: $q\n<br />MysqL Error: " . MysqLi_error($dbc));

    $sendEmail;
    $sendName;
    $subject;
    $body;
    $url;

    if (MysqLi_num_rows($r) == 1){
        $row = MysqLi_fetch_array($r,MysqLI_ASSOC);
        $url = $row['bsignup_url'];
        $sendEmail = $row['email'];
        $sendName = $row['name'];
        $subject = $row['bsignupemail_subj'];
        $body = $row['bsignup_email'];
    }


    //Create the message
    //Create the Transport
    $transport = Swift_SmtpTransport::newInstance('/*host*/',/*port*/)
      ->setUsername('/*username*/')
      ->setPassword('/*password*/')
      ;

    //Create the Mailer using your created Transport
    $mailer = Swift_Mailer::newInstance($transport);

    //Create a message
    $message = Swift_Message::newInstance($subject)
      ->setFrom(array($sendEmail => $sendName))
      ->setTo(array($email))    
      ->setBody($body,'text/html')
      ;

    //Send the message
    $result = $mailer->send($message);
}

解决方法

这可能是由于逻辑错误,使用Swift Mailer的代码要求它发送两次.

检查错误的循环,递归函数调用以及变量的多个包含和初始化等.有人告诉Swift Mailer两次发送电子邮件.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 为什么SwiftMailer会发送两封电子邮件?全部内容,希望文章能够帮你解决php – 为什么SwiftMailer会发送两封电子邮件?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。