I looked through the API documentation and language guide, but I did not see anything about sending emails in Dart. I also checked this google groups post, but it's quite old by Dart standards.
Is this possible to do? I know that I can always use the Process class to invoke external programs, but I'd prefer a real Dart solution if there's any.
You need to create a Flutter screen that contains text fields of the email. This includes a list of recipients, email subject, and email contents, along with the option to add attachments. At the end, add a button to send an email.
You can send mail from localhost with sendmail package , sendmail package is inbuild in XAMPP. So if you are using XAMPP then you can easily send mail from localhost. For example, you can configure C:\xampp\php\php. ini and c:\xampp\sendmail\sendmail.
Yes, you can directly Send email from your app via SMTP using mailer plugin. You will need to ask and store user's Email, Password, SMTP port, and host and use these credentials to send emails. This will work with pretty much with any email provider.
There's a library called mailer
, which does exactly what you asked for: sends out emails.
Set it as a dependency in your pubspec.yaml
and run pub install
:
dependencies:
mailer: any
I will give a simple example using Gmail on my local Windows machine:
import 'package:mailer/mailer.dart';
main() {
var options = new GmailSmtpOptions()
..username = '[email protected]'
..password = 'my gmail password'; // If you use Google app-specific passwords, use one of those.
// As pointed by Justin in the comments, be careful what you store in the source code.
// Be extra careful what you check into a public repository.
// I'm merely giving the simplest example here.
// Right now only SMTP transport method is supported.
var transport = new SmtpTransport(options);
// Create the envelope to send.
var envelope = new Envelope()
..from = '[email protected]'
..fromName = 'Your company'
..recipients = ['[email protected]', '[email protected]']
..subject = 'Your subject'
..text = 'Here goes your body message';
// Finally, send it!
transport.send(envelope)
.then((_) => print('email sent!'))
.catchError((e) => print('Error: $e'));
}
The GmailSmtpOptions
is just a helper class. If you want to use a local SMTP server:
var options = new SmtpOptions()
..hostName = 'localhost'
..port = 25;
You can check here for all possible fields in the SmtpOptions
class.
Here's an example using the popular Rackspace Mailgun:
var options = new SmtpOptions()
..hostName = 'smtp.mailgun.org'
..port = 465
..username = '[email protected]'
..password = 'from mailgun';
The library supports HTML emails and attachments as well. Check out the example to learn how to do that.
I am personally using mailer
with Mailgun in production use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With