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邮件。根据你的需求,你可以进一步扩展和定制邮件内容。