Я бы хотел использовать блок кода для инициализации почтового устройства, но каждый раз, когда я перехожу к функции, сценарий прекращает выполнение перед отправкой электронной почты. Когда я загружаю веб-страницу с помощью этой функции он прекрасно работает и отправляет соответствующие сообщения электронной почты:Перемещение кода на функцию, вызывающую остановку сценария
function SendAdminIntimationEmail(&$formvars)
{
if(empty($this->admin_email))
{
return false;
}
$mailer = new PHPMailer();
$mailer->CharSet = 'utf-8';
//Tell PHPMailer to use SMTP
$mailer->isSMTP();
//Set the hostname of the mail server
$mailer->Host = "test.com";
//Set the SMTP port number - likely to be 25, 465 or 587
$mailer->Port = 25;
//Whether to use SMTP authentication
$mailer->SMTPAuth = false;
//Username to use for SMTP authentication
$mailer->Username = "[email protected]";
//Password to use for SMTP authentication
$mailer->Password = "pword";
//Set who the message is to be sent from
$mailer->setFrom('[email protected]', 'test');
//Set an alternative reply-to address
$mailer->addReplyTo('[email protected]', 'First Last');
$mailer->AddAddress($this->admin_email);
$mailer->Subject = "New registration: ".$formvars['name'];
$mailer->From = $this->GetFromAddress();
$mailer->Body ="A new user registered at ".$this->sitename."\r\n".
"Name: ".$formvars['name']."\r\n".
"Email address: ".$formvars['email']."\r\n".
"UserName: ".$formvars['username'];
if(!$mailer->Send())
{
return false;
}
return true;
}
Но когда я перехожу блок кода в отдельную функцию и попытаться передать эту функцию, $ почтовик приемит веб-страницу загружает пустую страницу и не отправляет электронное письмо. Нерабочий код:
function SendAdminIntimationEmail(&$formvars)
{
if(empty($this->admin_email))
{
return false;
}
$mailer = new PHPMailer();
$mailer->CharSet = 'utf-8';
InitSMTPMailer($mailer);
$mailer->AddAddress($this->admin_email);
$mailer->Subject = "New registration: ".$formvars['name'];
$mailer->From = $this->GetFromAddress();
$mailer->Body ="A new user registered at ".$this->sitename."\r\n".
"Name: ".$formvars['name']."\r\n".
"Email address: ".$formvars['email']."\r\n".
"UserName: ".$formvars['username'];
if(!$mailer->Send())
{
return false;
}
return true;
}
function InitSMTPMailer($mailer)
{
//Tell PHPMailer to use SMTP
$mailer->isSMTP();
//Set the hostname of the mail server
$mailer->Host = "test.com";
//Set the SMTP port number - likely to be 25, 465 or 587
$mailer->Port = 25;
//Whether to use SMTP authentication
$mailer->SMTPAuth = false;
//Username to use for SMTP authentication
$mailer->Username = "[email protected]";
//Password to use for SMTP authentication
$mailer->Password = "pword";
//Set who the message is to be sent from
$mailer->setFrom('[email protected]', 'test');
//Set an alternative reply-to address
$mailer->addReplyTo('[email protected]', 'test');
return $mailer;
}
Если это полезно, эта функция всегда вызываются с помощью этой функции:
function RegisterUser()
{
if(!isset($_POST['submitted']))
{
return false;
}
$formvars = array();
if(!$this->ValidateRegistrationSubmission())
{
return false;
}
$this->CollectRegistrationSubmission($formvars);
if(!$this->SaveToDatabase($formvars))
{
return false;
}
if(!$this->SendUserConfirmationEmail($formvars))
{
return false;
}
$this->SendAdminIntimationEmail($formvars);
return true;
}
После добавления функции, которая делает скрипт не работает правильно, то оказывается, что RegisterUser () терпит неудачу в $ this-> SendAdminIntimationEmail ($ formvars); потому что функция SendUserConfirmationEmail ($ formvars) по-прежнему отправляет электронное письмо.
Я новичок в PHP, так что извините, если это просто, но я делаю что-то неправильно с передачей объекта по ссылкам или значению, которое что-то тормозит?
пустая страница = PHP разбился, и у вас есть все возможности отладки отключены. включите их и повторите попытку. они никогда не должны быть выключены в системе разработки/отладки в первую очередь. это кодирующий эквивалент заполнения ваших пальцев в ваших ушах и «лалалалала не может вас услышать» –
Являются ли эти функции частью класса? '$ this' предназначен для использования внутри класса. –
'InitSMTPMailer' возвращает почтовую программу, но вы ее не назначаете, и вы не передаете ее по ссылке. – aynber