У меня есть приложение, которое отправляет электронную почту, используя CakeEmail. Он работает на 100% нормально, если я отправляю одно электронное письмо, и я могу просмотреть его в своем почтовом ящике, и оно выглядит точно так, как должно.
Теперь, когда я помещаю один и тот же бит отправки в цикл, перебираю массив с уникальными ключами и пытаюсь отправить его, он даже не доставляет одну электронную почту.
Вот моя функция:
public function _email($data = null) {
if ($data == null) {
throw new NotFoundException(__('Invalid invite'));
}
if(count($data) == 1) {
$data[0] = $data;
unset($data['Invite']);
}
$email = new CakeEmail();
foreach($data as $invite) {
$this->Invite->id = $invite['Invite']['id'];
$email->reset();
$email->from(array('[email protected]'=>'Invite'));
$email->replyTo(array('[email protected]'));
$email->subject('subject');
$email->to(array($invite['Invite']['email'] => $invite['Invite']['name']));
$email->viewVars(array('key'=>$invite['Invite']['passkey'],'id'=>$invite['Invite']['id']));
$email->template('default');
$email->emailFormat('html');
$email->send();
}
$this->Session->setFlash("Invite(s) sent out.");
$this->redirect(array("action"=>"index"));
}
Как уже говорилось, если я передам 1 массив, такой как этот, он отправляет:
array(
'Invite' => array(
'id' => '13',
'passkey' => '207ac02e711ec6c09c0e86e7af676e18d7f14308',
'name' => 'Some Person',
'email' => '[email protected]',
'partner' => '',
'sent' => false,
'response' => 'Pending',
'created' => '2014-09-22 21:44:07',
'modified' => '2014-09-22 21:44:07'
)
)
Однако больше, чем один, как показано ниже, и он не работает без ошибок.
array(
(int) 0 => array(
'Invite' => array(
'id' => '13',
'passkey' => '207ac02e711ec6c09c0e86e7af676e18d7f14308',
'name' => 'Some Person',
'email' => '[email protected]',
'partner' => '',
'sent' => false,
'response' => 'Pending',
'created' => '2014-09-22 21:44:07',
'modified' => '2014-09-22 21:44:07'
)
),
(int) 1 => array(
'Invite' => array(
'id' => '14',
'passkey' => '03fd8bdb6d91f2a30963034ff9e56317e3894eeb',
'name' => 'another person',
'email' => '[email protected]',
'partner' => '',
'sent' => false,
'response' => 'Pending',
'created' => '2014-09-22 21:45:38',
'modified' => '2014-09-22 21:45:38'
)
)
)
Что я делаю неправильно? У меня был $email = new CakeEmail();
внутри цикла я пробовал unset($email)
в конце цикла я сделал все, что мог придумать. Тем не менее, он не отправляет.
РЕДАКТИРОВАТЬ 1
Вот результат, если я отлаживаю результат отправки. Я выбрал два письма.
/app/Controller/InvitesController.php (line 137)
array(
'headers' => 'From: "Invite" <[email protected]>
Reply-To: [email protected]
X-Mailer: CakePHP Email
Date: Tue, 23 Sep 2014 07:46:43 +0200
Message-ID: <54210943231844fc81b3020cc69187ab@localhost>
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit',
'message' => '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Emails/html</title>
</head>
<body>
<div width="100%" style="text-align:center">
<table width="300px">
<tr>
<td>
<p style="font-size: 8px; color:#222222;">
If this email does not display correctly, please click the yellow banner and allow images from this domain. Otherwise, click this link.
</p>
</td>
</tr>
<tr>
<td>
<img src="http://localhost/marike/img/email/tent.jpg" alt="" /><br><a href="http://localhost/marike/pages/home?i=13&k=207ac02e711ec6c09c0e86e7af676e18d7f14308"><img src="http://localhost/marike/img/email/link.jpg" alt="" /></a> </td>
</tr>
</table> </div>
</body>
</html>
'
)
/app/Controller/InvitesController.php (line 137)
array(
'headers' => 'From: "Invite" <[email protected]>
Reply-To: [email protected]
X-Mailer: CakePHP Email
Date: Tue, 23 Sep 2014 07:46:43 +0200
Message-ID: <54210943c83c432b85e3020cc69187ab@localhost>
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit',
'message' => '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Emails/html</title>
</head>
<body>
<div width="100%" style="text-align:center">
<table width="300px">
<tr>
<td>
<p style="font-size: 8px; color:#222222;">
If this email does not display correctly, please click the yellow banner and allow images from this domain. Otherwise, click this link.
</p>
</td>
</tr>
<tr>
<td>
<img src="http://localhost/marike/img/email/tent.jpg" alt="" /><br><a href="http://localhost/marike/pages/home?i=14&k=03fd8bdb6d91f2a30963034ff9e56317e3894eeb"><img src="http://localhost/marike/img/email/link.jpg" alt="" /></a> </td>
</tr>
</table> </div>
</body>
</html>
'
)
Задача ещё не решена.
Других решений пока нет …