The official Swiftmailer transport for OhMySMTP

1.0.2 2021-06-28 10:32 UTC

This package is auto-updated.

Last update: 2021-09-28 11:03:47 UTC


Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

OhMySMTP lets you send transactional emails from your app over an easy to use API.

This OhMySMTP PHP Package is a transport for SwiftMailer to send emails via OhMySMTP to make sending emails from PHP apps super simple. You can use this with popular frameworks such as Laravel, Codeigniter and Symfony to send transactional emails, or with a standalone PHP app.

This package uses the OhMySMTP HTTPS /send endpoint to send the email - which is generally faster and more reliable than SMTP, although you can of course use SMTP to send out emails from your PHP app without installing this package if you prefer.


You will need an OhMySMTP account with a verified domain and organization with an active plan.


Install the package via composer:

composer require ohmysmtp/ohmysmtp-swiftmailer

Account Setup

Set up an account at OhMySMTP and complete the Onboarding steps

Configure the Package

First you will need to retrieve your API token for your sending domain from OhMySMTP. You can find it under Organization -> Domain -> API Tokens

You'll need to store this API token somewhere in your app/runtime, we recommend Environment Variables for this, and the examples below assume that you have an environment variable called OHMYSMTP_API_TOKEN that contains your API token

Sending without a framework


$transport = new OhmysmtpSwiftmailerTransport(env('OHMYSMTP_API_TOKEN'));
$mailer = new Swift_Mailer($transport);

$message = (new Swift_Message('A transactional email from OhMySMTP!'))
  ->setFrom(['php@yourdomain.com' => 'Your Name'])
  ->setBody('<h1>HTML content</h1>', 'text/html')
  ->addPart('Text Body','text/plain');

// Attachments
$data = 'Raw Attachment Data';
$attachment = new Swift_Attachment($data, 'attachment.txt', 'text/plain');

// Email Tags
$headers = $message->getHeaders();
$headers->addTextHeader('OMS-Tag', 'tag-1');
$headers->addTextHeader('OMS-Tag', 'tag with spaces');


Sending with Laravel

To send with Laravel you need to make a few small tweaks, but it really only takes a moment.

  1. Add ohmysmtp to the config/mail.php configuration file:
'ohmysmtp' => [
    'transport' => 'ohmysmtp',
  1. Add the following to your config/services.php configuration file:
'ohmysmtp' => [
  'apiToken' => env('OHMYSMTP_API_TOKEN'),
  1. In config/app.php, add the following to the providers array:

and remove / comment out the line:

  1. In your .env file (or wherever you store environment variables), change the MAIL_MAILER variable as follows:


  1. Create a new file called OhmysmtpServiceProvider.php in App/Providers with the following contents:

namespace App\Providers;

use Illuminate\Mail\MailManager;
use Illuminate\Mail\MailServiceProvider;
use Ohmysmtp\OhmysmtpSwiftmailer\OhmysmtpSwiftmailerTransport;

class OhmysmtpServiceProvider extends MailServiceProvider
    protected function registerIlluminateMailer()
        $this->app->singleton('mail.manager', function ($app) {
            $manager = new MailManager($app);
            return $manager;

    protected function registerOhMySmtpTransport(MailManager $manager) {
        $manager->extend('ohmysmtp', function ($config) {
            if (! isset($config['apiToken'])) {
                $config = $this->app['config']->get('services.ohmysmtp', []);
            return new OhmysmtpSwiftmailerTransport($config['apiToken']);

After completing the above steps, all email will be sent via OhMySMTP.


For support please check the OhMySMTP Documentation or contact us at support@ohmysmtp.com


Please ensure to add a test for any changes. To run the tests:

composer test

Pull requests always welcome


The gem is available as open source under the terms of the MIT License.