在Dart中发送SMTP电子邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Dart中发送SMTP电子邮件相关的知识,希望对你有一定的参考价值。
我查看了API文档和语言指南,但我没有看到任何关于在Dart中发送电子邮件的信息。我也检查了这个google groups post,但Dart标准已经很老了。
这可能吗?我知道我总是可以使用Process类来调用外部程序,但是如果有的话,我更喜欢真正的Dart解决方案。
答案
有一个名为mailer
的库,它完全符合您的要求:发送电子邮件。
将它设置为pubspec.yaml
中的依赖项并运行pub install
:
dependencies:
mailer: any
我将在本地Windows机器上使用Gmail提供一个简单示例:
import 'package:mailer/mailer.dart';
main() {
var options = new GmailSmtpOptions()
..username = 'kaisellgren@gmail.com'
..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 = 'support@yourcompany.com'
..fromName = 'Your company'
..recipients = ['someone@somewhere.com', 'another@example.com']
..subject = 'Your subject'
..text = 'Here goes your body message';
// Finally, send it!
transport.send(envelope)
.then((_) => print('email sent!'))
.catchError((e) => print('Error: $e'));
}
GmailSmtpOptions
只是一个帮手类。如果要使用本地SMTP服务器:
var options = new SmtpOptions()
..hostName = 'localhost'
..port = 25;
你可以在check here for all possible fields班级SmtpOptions
。
这是使用流行的Rackspace Mailgun的一个例子:
var options = new SmtpOptions()
..hostName = 'smtp.mailgun.org'
..port = 465
..username = 'postmaster@yourdomain.com'
..password = 'from mailgun';
该库还支持html电子邮件和附件。查看the example以了解如何做到这一点。
我个人在生产中使用mailer
和Mailgun。
以上是关于在Dart中发送SMTP电子邮件的主要内容,如果未能解决你的问题,请参考以下文章