ublaboo mailing – produkční nic neodešle
- Bazylek
- Člen | 22
Dobrý den,
prosím o radu, kde dělám chybu. Používám Nette 3 a Ublaboo mailing pro odesílání emailů, kdy na localhost vše fungovalo. Po nahrání na hosting vše proběhne v pořádku vytvoří se eml, ale žádný email do schránky nepříjde.
common.neon
extensions:
ublaboo.mailing: Ublaboo\Mailing\DI\MailingExtension
ublaboo.mailing:
do: both # log|send|both
logDirectory: '%appDir%/../log/mails' # toto je výchozí možnost
mailImagesBasePath: %wwwDir% # toto je výchozí možnost
mails: [
default_sender: info@mywebsite.cz
default_recipient: admin@mywebsite.cz
]
App\Modules\Admin\SendmailPresenter.php
public function editFormSucceeded(Nette\Forms\Controls\SubmitButton $button): void
{
$values = $button->getForm()->getValues();
$podpis = $this->siteLayout->get('nameWeb');
$urlWebu = $this->siteLayout->get('urlWebu');
$vytvoril = $this->user->getIdentity()->data['fullname'];
...
$messageUserData= new MessageUsersData($values->emails, $values->subject, $values->message, $vytvoril, $urlWebu, $podpis);
// mailFactory načítám v App\Base\BasePresenter.php přes konstruktor
$mail = $this->mailFactory->createByType(MessageUsersMail::class, $messageUserData);
$mail->send();
$this->flashMessage('Email byl úspěšně odeslán na email: ', 'green' );
$this->redirect('default');
}
App\components\Messanger\
MessageUsersMail.php
declare(strict_types=1);
namespace App;
use Nette;
use Nette\Bridges\ApplicationLatte\TemplateFactory;
use Ublaboo\Mailing\AbstractMail;
use Ublaboo\Mailing\IComposableMail;
use Ublaboo\Mailing\IMessageData;
use Texy;
class MessageUsersMail extends AbstractMail implements IComposableMail
{
//natavime přenos do šablony
public function compose(Nette\Mail\Message $message, ?IMessageData $mailData): void
{
// dump($this->mailAddresses['default_sender']) OK
$message->setFrom($this->mailAddresses['default_sender']);
$message->addTo($mailData->emails);
$text = $mailData->message;
$texy = new Texy\Texy;
// Filtr texy v šabloně
$this->template->addFilter('texy', function ($text) use (& $texy) {
//return $this->texy->process($text);
return Nette\Utils\Html::el()->setHtml($texy->process($text));
});
}
}
MessageUsersData.php
declare(strict_types=1);
namespace App;
use Ublaboo\Mailing\IMessageData;
class MessageUsersData implements IMessageData
{
public $subject;
public $emails;
public $message;
public $created;
public $urlWebu;
public $signature;
/**
* MessageUsersData constructor.
*
* @param $emails
* @param $subject
* @param $password
* @param $created
* @param $urlWebu
* @param $signature
*/
public function __construct($emails, $subject, $message, $created, $urlWebu, $signature)
{
$this->subject = $subject;
$this->emails = $emails;
$this->message = $message;
$this->created = $created;
$this->urlWebu = $urlWebu;
$this->signature = $signature;
}
}
App\components\Messanger\templlates
MessageUsersMail.latte
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<style type="text/css">
</style>
<title>{$mailData->subject}</title>
</head>
<body>
{$mailData->message|texy}
<br/>
<br/>
<p><a href="http://{$mailData->urlWebu}">{$mailData->signature}</a></p>
<p style="font-size:10px">Vytvořil: {$mailData->created}</p>
<br/>
</body>
</html>
Pokud použiji základní nastavení
App\Modules\Admin\SendmailPresenter.php
use Nette\Mail\Message;
use Nette\Mail\SendmailMailer;
public function editFormSucceeded(Nette\Forms\Controls\SubmitButton $button): void
{
$mail = new Message;
$mail->setFrom('info@mywebsite.cz')
->addTo('email@example.com')
->setSubject('Pokus odeslání')
->setBody("Dobrý den,\ntoto je zkušební zpráva.");
$mailer = new SendmailMailer;
$mailer->send($mail);
}
tak emaily do schránky přijdou.
Editoval Bazylek (2. 6. 2020 7:55)