У меня есть следующий код, который отправляет мою электронную почту:
/**
* @param array $to
* @param string $subject
* @param array $vars
* @param string $template
* @param array $from
*/
public function sendEmail(array $to, $subject, array $vars, $template = 'default', array $from = ['dev@example.com' => 'Online'])
{
$transport = 'default';
if (Configure::read('debug')) {
$transport = 'dev';
}
$mailer = new Email($transport);
if ($this->isCommandLineInterface()) {
$mailer->setDomain('http://local.peepznew.com');
}
$this->addRecipients($mailer, $to);
$mailer->setFrom($from);
$mailer->setSubject($subject);
$mailer->setTemplate($template);
if (isset($vars['preheaderText']) === false) {
$vars['preheaderText'] = '';
}
$vars['subject'] = $subject;
$mailer->setViewVars($vars);
$mailer->setEmailFormat('both');
$mailer->send();
}
Этот код вызывается как из веб-интерфейса, так и из командной строки.После попыток получить полный URL для отображения в сообщениях, отправленных из командной строки, я прочитал документы и наткнулся на this :
Именно поэтому я делаю вызов setDomain.Я снова запускаю свой код, и у него все еще нет полных URL.Итак, я создал точно такую же функцию как в веб-интерфейсе, так и в cli, которая выглядит следующим образом:
$this->sendEmail(
['my.email@example.com'],
'Test Email',
[
'title' => 'We need to select another peep',
'showFooterLinks' => true,
]
);
die;
Шаблон по умолчанию выглядит так (буквально содержит только одну строку):
echo $this->Html->link('test link', ['controller' => 'jobs', 'action' => 'select_staff', 1, '_full' => true]);
Письма из веб-интерфейса, использующие приведенный выше код, отправляют безупречно.Полные URL и все.Однако из клика он просто отправляет /jobs/select_staff/1
.
Почему это так и как мне это исправить?