簡體   English   中英

為什么SwiftMailer會發送兩封電子郵件?

[英]Why is SwiftMailer sending two emails?

我通過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兩次發送電子郵件。

對於那些有相同問題的人使用:

    return $this->redirectToRoute('route', array('parameter'=>$parameter));

代替:

    return $this->render(...);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM