A Simple Way to Open Mail Apps in Flutter

May 28, 20252 min readBy Sinnoor C

Sending emails directly from a Flutter app seems simple… until you realize there’s no official API to reliably open the user’s mail app across both Android and iOS. That’s why I built open_mail_launcher — a cross-platform Flutter plugin to handle this task with elegance and reliability.

Whether you’re building a feedback feature, account verification flow, or a simple “contact us” button, this package takes care of launching the right mail app — or gracefully falling back when none are installed.

✨ What Can It Do?

With open_mail_launcher, you can:

  • 📱 Query installed email apps on both Android & iOS
  • 💌 Compose emails with pre-filled To, CC, BCC, Subject, and Body
  • 🧭 Launch the default email app or let the user choose from multiple
  • 📎 Attach files (Android only)
  • 🧩 Use a built-in picker UI when multiple options are available

🛠️ Quick Example

final emailContent = EmailContent(
  to: ['contact@myapp.com'],
  subject: 'Hello from Flutter!',
  body: 'This is a message from your app user.',
);
// Launch any installed email app
await OpenMailLauncher.openMailApp(emailContent: emailContent);

If multiple mail apps are installed, you can use the built-in picker to let users choose:

MailApp? selectedApp = await OpenMailLauncher.showMailAppPicker(
  context: context,
  mailApps: result.options,
);

🖼️ Built for Real Apps

Here’s what makes it production-ready:

  • Fully async APIs for smooth integration
  • Clean error handling (OpenMailAppResult)
  • Optional fallback to native composer when no mail apps are found
  • Works with all major clients: Gmail, Outlook, Yahoo, Spark, Superhuman, and more

📦 Try it Now

You can install the package from pub.dev → open_mail_launcher:

dependencies:
  open_mail_launcher: ^0.1.0

🤝 Contributions Welcome

This is an open-source effort. If you have suggestions, find bugs, or want to contribute — feel free to open an issue or PR on the GitHub repo. Let’s make this the go-to solution for mail launching in Flutter.

💬 Let Me Know What You Think

I’d love to hear your feedback!  Are there specific features you’d like added? Or interesting use cases you’re solving with this?

Drop a comment or reach out on LinkedIn, and let’s connect 🚀