E-mail

MailSender is een statische hulpklasse voor het verzenden van e-mail via SMTP. Het is een wrapper rond het mailer-pakket.

Importeren

import 'package:finch/finch_mail.dart';

Een e-mail verzenden

bool success = await MailSender.sendEmail(
  from: '[email protected]',
  fromName: 'My App',
  host: env.get('MAIL_HOST', 'smtp.example.com'),
  port: env.getInt('MAIL_PORT', 587),
  username: env.get('MAIL_USER', ''),
  password: env.get('MAIL_PASS', ''),
  ssl: true,
  allowInsecure: false,
  to: ['[email protected]'],
  subject: 'Welcome to My App',
  html: '<h1>Hello!</h1><p>Your account is ready.</p>',
  text: 'Hello! Your account is ready.',
);

if (!success) {
  Console.e('Failed to send email');
}

Parameters van MailSender.sendEmail

Parameter Type Standaard Beschrijving
from String verplicht E-mailadres van de afzender
fromName String '' Weergavenaam van de afzender
host String 'localhost' SMTP-serverhostnaam
port int 1025 SMTP-poort (doorgaans 465/587)
username String? — SMTP-gebruikersnaam
password String? — SMTP-wachtwoord
ssl bool true SSL/TLS inschakelen
allowInsecure bool true Onveilige verbinding toestaan (geen SSL)
to List<String> verplicht Ontvangeradressen
subject String '' E-mailonderwerp
html String '' HTML-inhoud
text String '' Platte-tekstinhoud

Controllervoorbeeld

class HomeController extends Controller {
  Future<String> sendTestEmail() async {
    var email = rq.get<String>('email', def: '');
    if (email.isEmpty) return rq.renderError(400, message: 'Missing email');

    var sent = await MailSender.sendEmail(
      from: '[email protected]',
      host: env.get('MAIL_HOST', 'localhost'),
      port: env.getInt('MAIL_PORT', 1025),
      username: env.get('MAIL_USER'),
      password: env.get('MAIL_PASS'),
      ssl: false,
      to: [email],
      subject: 'Test',
      html: '<p>This is a test email from Finch.</p>',
    );

    return rq.renderData(data: {'success': sent});
  }
}

Ontwikkelomgeving instellen

Gebruik voor lokale ontwikkeling MailHog of Mailpit als lokale SMTP-server:

# Docker
docker run -d -p 1025:1025 -p 8025:8025 axllent/mailpit

Configureer vervolgens:

MAIL_HOST=localhost
MAIL_PORT=1025

Open http://localhost:8025 in je browser om de opgevangen e-mails te bekijken.