Zend Mailer Error "From the header twice"

My question is in the Zend Mail database

I have a class that extends Zend Mail. Basically, he should send two different letters to users at registration.

It has two functions sendRegistrationMail and sendActivationMail, and both methods use the same transport initialized in the constructor.

Calling two sendRegistrationMail functions works, but the second gives an error: **From Header Set Twice**

 class Mailer_Register_SendMail extends Zend_Mail { public $_config; public $_transport; public $_email; public $_fromEmail; public $_fromFullName; public function __construct($email) { parent::__construct(); $this->_config=array('auth'=>'login','ssl'=>'tls','username'=>"$email",'password'=>'12345678','port'=>'25'); $this->_transport=new Zend_Mail_Transport_Smtp('127.0.0.1',$this->_config); $this->_email=$email; $this->_fromEmail=" administrator@rta.com "; $this->_fromFullName="RTAsys.com"; } public function sendRegistrationMail() { $emailmessage="<h3>Welcome to the Atanik Authorization</h3></br>". "<p>You will soon receive your activation email as a separate message</p>"; $fromemail=$this->_fromEmail; $fromfullname=$this->_fromFullName; $to=$this->_email; $subject="Welcome to RTA"; $this->setBodyHtml($emailmessage); $this->setFrom($fromemail,$fromfullname); $this->addTo($to); $this->setSubject($subject); try { $this->send($this->_transport); } catch (Zend_Mail_Transport_Exception $ex) { } } public function sendActivationMail() { $subjectActivation="Activate Your Angaza Account"; $emailActivationMessage="Thank you for taking time to join Atanik Authorization Please click the link below to activate your account now http://localhost/RTAsys/public/Account/activate?email=".$this->_email; $fromActivationEmail=$this->_fromEmail; $fromActivationFullName=$this->_fromFullName; $to=$this->_email; $this->setBodyText($emailActivationMessage); $this->setFrom($fromActivationEmail,$fromActivationFullName); $this->addTo($to); $this->setSubject($subjectActivation); try { $this->send($this->_transport); } catch (Zend_Mail_Transport_Exception $ex) { } } } ?> 
+4
source share
1 answer

Use clearFrom() to clear the headers during each iteration, if you really have to use the same Zend_Mail object for one iteration:

 $mail = new Zend_Mail(); foreach ($users as $key => $user) { $mail->clearFrom(); $mail->setFrom(' foo@bar '); // do some more stuff } 

The error itself is pretty clear: you call setFrom() more than once, which is not required. Most likely, this is caused by creating a Zend_Mail object outside of the iteration and calling setFrom() from this iteration.

+6
source

Source: https://habr.com/ru/post/1344237/


All Articles