Discover email account settings everywhere.

Available under the commercial friendly MPL Mozilla Public License 2.0.


Add this dependency your pubspec.yaml file:

  enough_mail_discovery: ^1.0.0

The latest version or enough_mail_discovery is enough_mail_discovery version.


Check out for a web demo. Note that enough_mail_discovery can even detect more email setting on non-web systems that support TCP/IP Sockets.

API Documentation

Check out the full API documentation at

API Usage

Just call emailAddress) to resolve the email address:

  /// Tries to discover mail settings for the specified [emailAddress].
  /// Optionally set [forceSslConnection] to `true` when not encrypted
  /// connections should not be allowed.
  /// Set [isLogEnabled] to `true` to output debugging information during
  /// the discovery process.
  /// Set [isWeb] to `true` when running on the web platform. Use the
  /// `kIsWeb` constant from `package:flutter/foundation.dart` when called
  /// from Flutter.
  static Future<ClientConfig?> discover(
    String emailAddress, {
    bool forceSslConnection = false,
    bool isLogEnabled = false,
    bool isWeb = false,

Example for command line:

import 'package:enough_mail_discovery/enough_mail_discovery.dart';

void main() async {
  const email = '';
  final config = await, isLogEnabled: false);
  if (config == null) {
    print('Unable to discover settings for $email');
  } else {
    print('Settings for $email:');
    for (final provider in config.emailProviders!) {
      print('provider: ${provider.displayName}');
      print('provider-domains: ${}');
      print('documentation-url: ${provider.documentationUrl}');

Tool Usage

enough_mail_discovery contains the discover.dart tool in it's example folder. After cloning the project, run dart example/discover.dart to discover the email settings. Use the --log option to output more information during the discovery process, --ssl to enforce SSL usage and --preferred to only print the preferred incoming and outgoing servers.

Check out these related projects:

Miss a feature or found a bug?

Please file feature requests and bugs at the issue tracker.

Contribute / Develop

Want to contribute? Please check out contribute. This is an open-source community project. Anyone, even beginners, can contribute.

This is how you contribute:

  • Fork the enough_mail_discovery project by pressing the fork button.
  • Clone your fork to your computer: git clone$your_username/enough_mail_discovery
  • Do your changes. When you are done, commit changes with git add -A and git commit.
  • Push changes to your personal repository: git push origin
  • Go to enough_mail_discovery and create a pull request.

Thank you in advance!

After changing model classes, re-run the JSON serialization by calling flutter pub run build_runner build --delete-conflicting-outputs.


enough_mail_discovery is licensed under the commercial friendly Mozilla Public License 2.0.