[英]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.