1. Go to this page and download the library: Download ublaboo/mailing library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ublaboo / mailing example snippets
namespace App\Mailing;
use Ublaboo\Mailing\IMessageData;
class ContactMailData implements IMessageData
{
public function __construct(
public readonly string $recipient,
)
{
}
}
namespace App\Mailing;
use InvalidArgumentException;
use Nette\Mail\Message;
use Ublaboo\Mailing\Mail;
use Ublaboo\Mailing\IComposableMail;
use Ublaboo\Mailing\IMessageData;
class ContactMail extends Mail implements IComposableMail
{
public function compose(Message $message, ?IMessageData $mailData): void
{
if (!$mailData instanceof ContactMailData) {
throw new InvalidArgumentException();
}
$message->setFrom($this->mailAddresses['defaultSender']);
$message->addTo($mailData->recipient);
}
}
namespace App\Presenters;
use App\Mailing\ContactMail;
use App\Mailing\ContactMailData;
use Nette\Application\UI\Presenter;
use Nette\DI\Attributes\Inject;
use Ublaboo\Mailing\MailFactory;
class HomepagePresenter extends Presenter
{
#[Inject]
public MailFactory $mailFactory;
public function actionDefault(): void
{
$mail = $this->mailFactory->createByType(
ContactMail::class,
new ContactMailData(
recipient: '[email protected]'
),
);
$mail->send();
}
}
# ...
public function compose(Message $message, ?IMessageData $mailData): void
{
# ...
$this->setTemplateFile(__DIR__ . '/templates/ContactMail.latte');
}
# ...
$mail = $mailFactory->createByType(ContactMail::class, new ContactMailData(recipient: '[email protected]']));
$mail->setTemplateFile('super_awesome_template.latte');
# ...
public function compose(Message $message, ?IMessageData $mailData): void
{
# ...
$message->setBody('Hello');
}