ایمیل
فینچ از طریق MailSender از SMTP پشتیبانی میکند. آن را در FinchConfigs پیکربندی کنید و MailSender.sendEmail() را از هر controller فراخوانی کنید.
پیکربندی
FinchConfigs(
mailDefault: env['MAIL_FROM'] ?? '[email protected]',
mailHost: env['MAIL_HOST'] ?? 'smtp.example.com',
)
یا با متغیرهای محیطی:
[email protected]
MAIL_HOST=smtp.example.com
ارسال ایمیل
import 'package:finch/finch_mail.dart';
Future<String> sendWelcome() async {
var email = rq.get<String>('email', def: '');
var result = await MailSender.sendEmail(
host: FinchApp.config.mailHost,
from: MailSender.mailAddress(
email: FinchApp.config.mailDefault,
name: 'تیم فینچ',
),
to: [MailSender.mailAddress(email: email)],
subject: 'به فینچ خوش آمدید!',
body: '<h1>سلام!</h1><p>ثبتنام شما موفق بود.</p>',
isHtml: true,
);
if (result.success) {
return rq.renderData(data: {'message': 'ایمیل ارسال شد'});
} else {
return rq.renderError(status: 500, message: result.error ?? 'خطا در ارسال ایمیل');
}
}
پارامترهای sendEmail
| پارامتر | نوع | توضیح |
|---|---|---|
host |
String |
آدرس سرور SMTP |
from |
MailAddress |
آدرس فرستنده |
to |
List<MailAddress> |
آدرسهای گیرنده |
subject |
String |
موضوع ایمیل |
body |
String |
محتوای ایمیل |
isHtml |
bool |
آیا body برابر HTML است (پیشفرض: false) |
cc |
List<MailAddress>? |
گیرندگان رونوشت |
bcc |
List<MailAddress>? |
گیرندگان رونوشت مخفی |
port |
int? |
پورت SMTP (پیشفرض: 465) |
user |
String? |
نام کاربری SMTP |
password |
String? |
رمز عبور SMTP |
راهاندازی Mailpit برای توسعه
Mailpit یک سرور SMTP محلی است که تمام ایمیلهای صادرشده را به جای ارسال واقعی نگه میدارد:
# در docker-compose.yaml
mailpit:
image: axllent/mailpit
ports:
- "8025:8025" # رابط وب
- "1025:1025" # SMTP
MAIL_HOST=localhost
MAIL_PORT=1025
رابط وب را در http://localhost:8025 مشاهده کنید.