Flutter邮件发送插件dart_mailgun的使用
Flutter邮件发送插件dart_mailgun的使用
dart-mailgun 是一个用Dart编写的用于与Mailgun API交互的客户端。本文将介绍如何在Flutter项目中使用此插件来发送邮件。
功能
- 支持发送带任何参数的消息
开始使用
Pubspec
首先,在你的 pubspec.yaml 文件中添加 dart_mailgun 依赖:
dependencies:
dart_mailgun: ^1.0.3
然后运行 flutter pub get 来安装依赖。
初始化客户端
你可以选择默认主机 (api.mailgun.net) 或者欧盟主机 (api.eu.mailgun.net)。
默认主机
import 'package:dart_mailgun/client.dart';
var client = MailgunClient(domain: "my-mailgun-domain", apiKey: "my-mailgun-api-key");
欧盟主机
import 'package:dart_mailgun/client.dart';
var client = MailgunClient.eu(domain: "my-mailgun-domain", apiKey: "my-mailgun-api-key");
发送消息
消息通过 [MessageClient] 发送,该类预先配置在 [MailgunClient.message] 下。
要发送消息,你需要通过 [MessageParams] 配置参数。它接受所有在Mailgun API文档中列出的参数,并且还会处理传递参数到 [http.MultipartRequest] 对象。
实际的邮件内容存储在 [MessageParams.content] 中,是一个 [MessageContent] 实例,可以通过以下构造函数进行配置:
[MessageContent.text]- 将内容添加到request.fields['text'][MessageContent.html]- 将内容添加到request.fields['html'][MessageContent.template]- 使用配置的模板发送邮件,有两个参数:模板名称和变量映射表
示例
文本格式
var messageClient = client.message;
var params = MessageParams(
from: 'from@example.com',
to: ['to@example.com'],
subject: '邮件标题',
content: MessageContent.text('你好,这是一封测试邮件。'),
);
var response = await messageClient.send(params);
HTML格式
var messageClient = client.message;
var params = MessageParams(
from: 'from@example.com',
to: ['to@example.com'],
subject: '邮件标题',
content: MessageContent.html('<h1>你好</h1>'),
);
var response = await messageClient.send(params);
模板格式
var messageClient = client.message;
var params = MessageParams(
from: 'from@example.com',
to: ['to@example.com'],
subject: '邮件标题',
content: MessageContent.template('mytemplate', {'var1': 'val1'}),
);
var response = await messageClient.send(params);
[MessageParams] 还可以接受附件列表,类型为 [io.File] 对象:
var messageClient = client.message;
var params = MessageParams(
from: 'from@example.com',
to: ['to@example.com'],
subject: '邮件标题',
content: MessageContent.text('你好,这是一封测试邮件。'),
attachments: [File('$path/myfile.txt')],
);
var response = await messageClient.send(params);
如果找不到所需的参数,可能可以在 [MessageParams.options] 下找到,类型为 [MessageOptions]:
var params = MessageParams(
from: 'from@example.com',
to: ['to@example.com'],
subject: '邮件标题',
content: MessageContent.text('你好,这是一封测试邮件。'),
options: MessageOptions(
tracking: true,
requireTLS: false,
customHeaders: {
'My-Header': 'myheadervalue'
},
dkim: false,
testMode: true
),
);
[MessageOptions] 会自动解析 [MessageOptions.customHeaders] 的键到 h:X-$key,并且 [MessageOptions.customVars] 到 v:$key,所以除非你想手动添加前缀,否则不需要包含前缀。
响应
来自任何客户端的响应都是 [Response] 类的实例。
响应包含两个方法:
[Response.ok]返回一个布尔值,指示响应是否成功[Response.status]返回一个[ResponseStatus]实例,其中包含状态码[ResponseStatus.code]和原因短语[ResponseStatus.reason]
你也可以直接从 [Response.statusCode] 和 [Response.reasonPhrase] 分别访问这些属性。
正文位于 [Response.body] 中。它将文本响应和JSON响应解析为 [Map<String, String>],并支持 [http.Response] 和 [http.StreamedResponse]。[Response.body] 返回一个 [Future<Map<String, dynamic>>] 以便能够读取 [http.StreamedResponse] 的正文中的字节。
文本正文添加在 Response.body['message'] 下。
var response = await client.send(params);
if (!response.ok()) {
// 处理错误
print(response.reasonPhrase);
} else {
var body = await response.body;
print(body['message']);
// 处理结果
}
更多关于Flutter邮件发送插件dart_mailgun的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter邮件发送插件dart_mailgun的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中使用dart_mailgun插件来发送邮件的示例代码。dart_mailgun是一个用于与Mailgun API进行交互的Flutter插件,可以用来发送电子邮件。
首先,确保你已经在pubspec.yaml文件中添加了dart_mailgun依赖:
dependencies:
flutter:
sdk: flutter
dart_mailgun: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get来安装依赖。
接下来,你需要设置Mailgun API密钥和域名。这些敏感信息通常存储在环境变量或安全的配置文件中,但为了简化示例,这里将直接在代码中硬编码(请注意,在生产环境中应避免这种做法)。
import 'package:flutter/material.dart';
import 'package:dart_mailgun/dart_mailgun.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Mailgun Email Sender'),
),
body: Center(
child: ElevatedButton(
onPressed: _sendEmail,
child: Text('Send Email'),
),
),
),
);
}
Future<void> _sendEmail() async {
// Mailgun API key and domain
final String apiKey = 'your_api_key_here'; // 请替换为你的Mailgun API密钥
final String domain = 'your_domain_here.com'; // 请替换为你的Mailgun域名
// Email details
final String from = 'Excited User <mailgun@your_domain_here.com>';
final String to = 'test@example.com';
final String subject = 'Hello';
final String text = 'Testing some Mailgun awesomeness!';
final String html = '<html>Inline image here: <img src="cid:unique_id"></html>';
// Create Mailgun client
final mailgunClient = MailgunClient(apiKey: apiKey, domain: domain);
// Prepare email message
final message = Message(
from: from,
to: [to],
subject: subject,
text: text,
html: html,
);
try {
// Send email
final response = await mailgunClient.send(message);
print('Email sent successfully: ${response.body}');
} catch (e) {
print('Failed to send email: $e');
}
}
}
在这个示例中,我们定义了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,会调用_sendEmail函数来发送电子邮件。
注意:
- 你需要将
your_api_key_here替换为你的Mailgun API密钥,将your_domain_here.com替换为你的Mailgun域名。 - 邮件的
from字段需要是你在Mailgun上验证过的邮箱地址。 html字段中的<img src="cid:unique_id">是一个占位符,用于内联图像。如果你需要发送带附件或内联图像的邮件,需要进一步配置Message对象,包括添加附件和设置MIME类型等。
这个示例展示了如何使用dart_mailgun插件在Flutter应用中发送简单的文本和HTML邮件。根据你的需求,你可以进一步扩展和定制邮件内容。

