邮件
Finch 通过 MailSender 支持 SMTP。在 FinchConfigs 中配置,并从任何控制器调用 MailSender.sendEmail()。
配置
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: 'Finch 团队',
),
to: [MailSender.mailAddress(email: email)],
subject: '欢迎使用 Finch!',
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" # Web 界面
- "1025:1025" # SMTP
MAIL_HOST=localhost
MAIL_PORT=1025
在 http://localhost:8025 查看 Web 界面。