Dart MailSlurp package
MailSlurp is a free API for creating email accounts. Send and receive emails from Dart and Flutter code and tests.
Quick links
Install
dart pub add mailslurp
Configure
First configure the default api client with your MailSlurp API Key:
import 'package:mailslurp/api.dart';
defaultApiClient.getAuthentication<ApiKeyAuth>('API_KEY').apiKey = 'YOUR_MAILSLURP_API_KEY';
Use controllers
The MailSlurp Dart library exports controllers that map to the REST API. Controller methods return Futures that can be consumed in async methods.
var inboxController = InboxControllerApi();
// future result
Future<Inbox> inbox = inboxController.createInboxWithOptions(CreateInboxDto());
// or async usage
void main() async {
var inbox = await inboxController.createInboxWithOptions(CreateInboxDto());
}
Create email addresses
You can create real email accounts using the InboxController:
test('can create email addresses', () async {
var inboxController = InboxControllerApi();
var inbox = await inboxController.createInboxWithOptions(CreateInboxDto());
expect(inbox.emailAddress.contains("@mailslurp"), true);
});
Send emails
Send emails using the InboxController with an inboxId
:
test('can send emails', () async {
var inboxController = InboxControllerApi();
var inbox = await inboxController.createInboxWithOptions(CreateInboxDto());
var confirmation = await inboxController.sendEmailAndConfirm(inbox.id,
sendEmailOptions: SendEmailOptions(
to: [inbox.emailAddress],
subject: "Test email",
body: "<html>My message</html>",
isHTML: true
)
);
expect(confirmation.inboxId, inbox.id);
});
Receive emails
Receive emails using the WaitForController with an inboxId
and a timeout.
test('can receive emails', () async {
var email = await waitForController.waitForLatestEmail(inboxId: inbox.id, timeout: 30000, unreadOnly: true);
expect(email.subject, "Test email");
});
Test usage
import 'dart:io';
import 'package:test/test.dart';
import 'package:mailslurp/api.dart';
void main() async {
setUp(() {
// read api key from environment variable
var apiKey = Platform.environment["API_KEY"];
expect(apiKey != null, true);
// set api key and instantiate controllers
defaultApiClient.getAuthentication<ApiKeyAuth>('API_KEY').apiKey = apiKey;
});
test('can create email addresses', () async {
var inboxController = InboxControllerApi();
var inbox = await inboxController.createInboxWithOptions(CreateInboxDto());
expect(inbox.emailAddress.contains("@mailslurp"), true);
});
test('can send and receive emails', () async {
var inboxController = InboxControllerApi();
var waitForController = WaitForControllerApi();
var inbox = await inboxController.createInboxWithOptions(CreateInboxDto());
var confirmation = await inboxController.sendEmailAndConfirm(inbox.id,
sendEmailOptions: SendEmailOptions(
to: [inbox.emailAddress],
subject: "Test email",
body: "<html>My message</html>",
isHTML: true
)
);
expect(confirmation.inboxId, inbox.id);
var email = await waitForController.waitForLatestEmail(inboxId: inbox.id, timeout: 30000, unreadOnly: true);
expect(email.subject, "Test email");
});
}