Provides mailtrap.io integration for Symfony Mailer.
If you just want to get started quickly, you should run the following command:
composer require railsware/mailtrap-php symfony/http-client nyholm/psr7
Add MailtrapTransport into your config/services.yaml
file
...
# add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones
Mailtrap\Bridge\Transport\MailtrapTransportFactory:
tags:
- { name: 'mailer.transport_factory' }
Add or change MAILER_DSN variable inside your .env
file. Also, you need to change the YOUR_API_KEY_HERE
placeholder.
MAILER_DSN=mailtrap+api://YOUR_API_KEY_HERE@default
# or
MAILER_DSN=mailtrap+api://[email protected]
Add or change MAILER_DSN variable inside your .env
file. Also, you need to change the YOUR_API_KEY_HERE
placeholder.
More info about bulk sending -> https://help.mailtrap.io/article/113-sending-streams
MAILER_DSN=mailtrap+api://[email protected]
Add or change MAILER_DSN variable inside your .env
file. Also, you need to change the YOUR_API_KEY_HERE
placeholder and put correct inboxId
.
More info sandbox -> https://help.mailtrap.io/article/109-getting-started-with-mailtrap-email-testing
MAILER_DSN=mailtrap+api://[email protected]?inboxId=1000001
php bin/console mailer:test [email protected]
<?php
use Mailtrap\Mime\MailtrapEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Mailer\Transport\TransportInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;
final class SomeController extends AbstractController
{
private TransportInterface $transport;
public function __construct(TransportInterface $transport)
{
$this->transport = $transport;
}
/**
* @Route(name="send-test-email", path="/test", methods={"GET"})
*
* @return JsonResponse
*/
public function sendTestEmail(): JsonResponse
{
$message = (new MailtrapEmail())
->from('[email protected]')
->to('[email protected]')
->cc('[email protected]')
->bcc('[email protected]')
->replyTo('[email protected]')
->priority(Email::PRIORITY_HIGH)
->subject('Test email')
->text('text')
->category('category')
->customVariables([
'var1' => 'value1',
'var2' => 'value2'
])
;
$response = $this->transport->send($message);
return JsonResponse::create(['messageId' => $response->getMessageId()]);
}
}