R. Martinez
R. Martinez

Reputation: 159

Flutter email sender

I have this error when I send an email from form in flutter.

Unhandled Exception: PlatformException(UNAVAILABLE, defualt mail app not available, null)
class _MyAppState extends State<MyApp> {
  List<String> attachment = <String>[];
  TextEditingController _subjectController =
      TextEditingController(text: 'ct');
  TextEditingController _bodyController = TextEditingController(
      text: '''  a
  ''');
  final GlobalKey<ScaffoldState> _scafoldKey = GlobalKey<ScaffoldState>();
  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> send() async {
    // Platform messages may fail, so we use a try/catch PlatformException.
    final MailOptions mailOptions = MailOptions(
      body: 'Ro',
      subject: 'the Email Subject',
      recipients: ['[email protected]'],
      isHTML: true,

      attachments: [ 'path/to/image.png', ],
    );

    await FlutterMailer.send(mailOptions);

    String platformResponse;

    try {
      await FlutterMailer.send(mailOptions);
      platformResponse = 'success';
    } catch (error) {
      platformResponse = error.toString();
    }

    if (!mounted) return;
    _scafoldKey.currentState.showSnackBar(SnackBar(
      content: Text(platformResponse),
    ));
  }

Upvotes: 9

Views: 5942

Answers (3)

Hussam F. Alkdary
Hussam F. Alkdary

Reputation: 727

  1. make sure the Android Gradle Plugin is higher then 4.1.0 you will find it inside android\build.gradle file some thing like this

    dependencies { classpath 'com.android.tools.build:gradle:4.1.1' "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.4' }

2 . add this to your android/app/src/main/AndroidManifest.xml file just after where you add the <uses-permission>

<queries> <intent> <action android:name="android.intent.action.SENDTO" /> <data android:scheme="mailto" /> </intent> </queries>
  1. run flutter clean
  2. run flutter pub get or you can run your code it will do this for you after that Flutter email sender package should works for you this solve the issue for me

Upvotes: 0

Gianluca Cisana
Gianluca Cisana

Reputation: 81

Adding in AndroidManifest.xml this for me on Android solve the issue:

<application .... />
// add queries tag for mailto intent out side of application tag
<queries>
  <intent>
    <action android:name="android.intent.action.SENDTO" />
    <data android:scheme="mailto" />
  </intent>
</queries>

Upvotes: 8

Wei Jason
Wei Jason

Reputation: 51

I had the same issue on iPhone, it was caused because I hadn't set up the default iOS default Mail App.

Upvotes: 5

Related Questions