ایمیل
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 را در مرورگر خود باز کنید.