odesílání mailů přes smtpmailer i sendmailer
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jarda256
- Člen | 130
Ahoj chtěl bych se zeptat, jestli je nějaký problém ve využívání sendmaileru i smtp maileru zároveň. Lidi kterým měl přijít mail přes sendmailer, tak občas nedorazil. Lze to nějak zjistit, jestli byl mail úspěšný. Případně nevadí použití obojího.
V configu smtp nemám…mám to pouze takto.
Díky za rady
class MailSender
{
/** @var SmtpMailer */
protected $smtpMailer;
/** @var SendmailMailer */
protected $sendMailer;
/** @var EntityManager */
protected $em;
/** @var LinkGenerator */
private $linkGenerator;
/** @var ILatteFactory */
private $latteFactory;
public function __construct(EntityManager $em, LinkGenerator $lg, ILatteFactory $latteFactory)
{
$this->em = $em;
$this->linkGenerator = $lg;
$this->latteFactory = $latteFactory;
$this->smtpMailer = new SmtpMailer([
'host' => 'smtp.mailgun.org',
'username' => 'user',
'password' => 'pass',
'secure' => 'ssl',
]);
$this->sendMailer = new SendmailMailer();
}
public function sendEmail(Message $message, $template, $variables, $useQueue = TRUE)
{
$latte = $this->latteFactory->create();
UIMacros::install($latte->getCompiler());
$latte->addProvider('uiControl', $this->linkGenerator);
$html = $latte->renderToString(__DIR__ . '/' . $template, [
'variables' => $variables,
]);
$message
->setFrom('info@domain.cz', 'Domain')
->setHtmlBody($html);
if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') {
if ($useQueue === TRUE) {
try {
$this->smtpMailer->send($message);
} catch (SmtpException $e) {
$this->sendMailer->send($message);
}
} else {
$this->sendMailer->send($message);
}
}
}
}