ایمیل

MailSender یک کلاس ابزار (utility) استاتیک برای ارسال ایمیل از طریق SMTP است. این کلاس پکیج mailer را wrap می‌کند.

وارد کردن

import 'package:finch/finch_mail.dart';

ارسال ایمیل

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');
}

پارامترهای MailSender.sendEmail

پارامتر نوع پیش‌فرض توضیح
from String الزامی آدرس ایمیل فرستنده
fromName String '' نام نمایشی فرستنده
host String 'localhost' نام میزبان سرور SMTP
port int 1025 پورت SMTP (معمولاً 465/587)
username String? نام کاربری SMTP
password String? رمز عبور SMTP
ssl bool true فعال‌سازی SSL/TLS
allowInsecure bool true اجازه دادن به اتصال ناامن (بدون SSL)
to List<String> الزامی آدرس‌های گیرنده
subject String '' موضوع ایمیل
html String '' بدنه HTML
text String '' بدنه متن ساده

مثال Controller

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});
  }
}

راه‌اندازی محیط توسعه

برای توسعه محلی، از MailHog یا Mailpit به‌عنوان یک سرور SMTP محلی استفاده کنید:

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

سپس پیکربندی کنید:

MAIL_HOST=localhost
MAIL_PORT=1025

برای مشاهده ایمیل‌های ضبط‌شده، http://localhost:8025 را در مرورگر خود باز کنید.