Simple & quick plugin for cross application data sharing of email fields in mobile development.
Flutter Mailer example app
- android
- ios
Add to your pubspec dependencies, like so:
dependencies:
flutter:
sdk: flutter
flutter_mailer: ^1.0.0
Instantiate mail options as follows:
import 'package:flutter_mailer/flutter_mailer.dart';
...
...
final MailOptions mailOptions = MailOptions(
body: 'a long body for the email <br> with a subset of HTML',
subject: 'the Email Subject',
recipients: ['example@example.com'],
isHTML: true,
bccRecipients: ['other@example.com'],
ccRecipients: ['third@example.com'],
attachments: [ 'path/to/image.png', ],
);
final MailerResponse response = await FlutterMailer.send(mailOptions);
switch (response) {
case MailerResponse.saved: /// ios only
platformResponse = 'mail was saved to draft';
break;
case MailerResponse.sent: /// ios only
platformResponse = 'mail was sent';
break;
case MailerResponse.cancelled: /// ios only
platformResponse = 'mail was cancelled';
break;
case MailerResponse.android:
platformResponse = 'intent was successful';
break;
default:
platformResponse = 'unknown';
break;
}
note gmail and other apps Might parse HTML out of the body.
use full if you want to send the intent to a specific App. returns false on [IOS]
const GMAIL_SCHEMA = 'com.google.android.gm';
final bool gmailinstalled = await isAppInstalled(GMAIL_SCHEMA);
if(gmailinstalled) {
final MailOptions mailOptions = MailOptions(
body: 'a long body for the email <br> with a subset of HTML',
subject: 'the Email Subject',
recipients: ['example@example.com'],
isHTML: true,
bccRecipients: ['other@example.com'],
ccRecipients: ['third@example.com'],
attachments: [ 'path/to/image.png', ],
appSchema: GMAIL_SCHEMA,
);
await FlutterMailer.send(mailOptions);
}
this package uses MFMailComposeViewController for [IOS] which requires the default mail App. if none is installed you might want to revert to use url_launcher returns false on [Android]
final bool canSend = await canSendMail();
if(!canSend && Platform.isIos) {
final url = 'mailto:$recipient?body=$body&subject=$subject';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}
For help getting started with Flutter, view official online documentation.
For help on editing plugin code, view the documentation.
based off of react-native-mail