Add your own email provider
You integrate your own email providers (sendgrid, mailgun, mailchimp, sparkpost, etc) instead of using Kirby's default PHPMailer library.
class CustomEmailProvider extends Kirby\Email\Email
{
    public function send(bool $debug = false): bool
    {
        // sending stuff
        return true;
    }
}
Kirby::plugin('my/email', [
    'components' => [
        'email' => function ($kirby, $props, $debug) {
            return new CustomEmailProvider($props, $debug);
        }
    ]
]);
SendGrid example
class SendGridProvider extends Kirby\Email\Email
{
    public function send(): bool
    {
        $sendgrid = new SendGrid("SENDGRID_APIKEY");
        $email    = new SendGrid\Email();
        $email->addTo(current(array_keys($this->to())))
              ->setFrom($this->from())
              ->setSubject($this->subject())
              ->setHtml($this->body()->html());
        return $sendgrid->send($email);
    }
}
Kirby::plugin('my/sendgrid', [
    'components' => [
        'email' => function ($kirby, $props, $debug) {
            return new SendGridProvider($props, $debug);
        }
    ]
]);
Mailgun Example
class MailgunProvider extends Kirby\Email\Email
{
    public function send(): bool
    {
        $mg = Mailgun\Mailgun::create('key-example'); // For US servers
        $mg = Mailgun\Mailgun::create('key-example', 'https://api.eu.mailgun.net'); // For EU servers
        return $mg->messages()->send('example.com', [
          'from'    => $this->from(),
          'to'      => current(array_keys($this->to())),
          'subject' => $this->subject(),
          'text'    => $this->body()->text()
        ]);
    }
}
Kirby::plugin('my/mailgun', [
    'components' => [
        'email' => function ($kirby, $props, $debug) {
            return new MailgunProvider($props, $debug);
        }
    ]
]);
Parameters
| Name | Type | Default | Description | 
|---|---|---|---|
| $kirby * | Kirby\Cms\App | 
                – | Kirby instance | 
| $props | array | 
                [ ] | 
        
                |
| $debug | bool | 
                false |