在 Dart 中发送 SMTP 电子邮件

2024-02-01

我查看了 API 文档和语言指南,但没有看到任何有关在 Dart 中发送电子邮件的内容。我也检查了这个谷歌群组帖子 https://groups.google.com/a/dartlang.org/forum/#!topic/misc/5YNvrmaWiDo,但按照 Dart 标准来说它已经相当老了。

这可以吗?我知道我总是可以使用 Process 类来调用外部程序,但我更喜欢真正的 Dart 解决方案(如果有)。


有一个图书馆叫mailer https://github.com/kaisellgren/mailer,这正是您所要求的:发送电子邮件。

将其设置为您的依赖项pubspec.yaml并运行pub install:

dependencies:
  mailer: any

我将给出一个在本地 Windows 计算机上使用 Gmail 的简单示例:

import 'package:mailer/mailer.dart';

main() {
  var options = new GmailSmtpOptions()
    ..username = '[email protected] /cdn-cgi/l/email-protection'
    ..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] /cdn-cgi/l/email-protection'
    ..fromName = 'Your company'
    ..recipients = ['[email protected] /cdn-cgi/l/email-protection', '[email protected] /cdn-cgi/l/email-protection']
    ..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只是一个辅助类。如果您想使用本地 SMTP 服务器:

var options = new SmtpOptions()
  ..hostName = 'localhost'
  ..port = 25;

You can 在这里检查所有可能的字段 https://github.com/kaisellgren/mailer/blob/master/lib/src/smtp/smtp_options.dart in the SmtpOptions class.

这是一个使用流行的例子机架空间邮件枪 https://mailgun.com/:

var options = new SmtpOptions()
  ..hostName = 'smtp.mailgun.org'
  ..port = 465
  ..username = '[email protected] /cdn-cgi/l/email-protection'
  ..password = 'from mailgun';

该库还支持 HTML 电子邮件和附件。查看这个例子 https://github.com/kaisellgren/mailer#sending-an-email-with-smtp学习如何做到这一点。

我个人使用mailer在生产环境中使用 Mailgun。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Dart 中发送 SMTP 电子邮件 的相关文章

随机推荐

  • 尝试理解 Pandas 中的 .apply()

    我试图避免循环数据帧 因此最近开始使用 apply 但是我不太理解这种行为 下面我有一个超级简单的玩具示例 系统会询问用户该列中的每个水果是否都是苹果 它们都是苹果 因此每个答案都是 Y import pandas as pd df pd
  • Sybase ASE ADO.net 2.0 提供商?

    我正在寻找一个 ADO net 2 0 或更高版本的 Sybase 数据库提供程序 该数据库似乎被称为 Sybase ASE 澄清一下 我对 ASE 感兴趣 而不是 SQL Anywhere 希望该提供程序将包含在数据库中 或者免费 我可以
  • Nuget 添加包出现访问被拒绝错误

    当我通过 Visual Studio 2015 GUI 添加 Nuget 包时 某些包未安装 并出现以下错误 对路径 Microsoft DotNet InternalAbstractions dll 的访问被拒绝 我尝试以管理员身份运行
  • 如何使用 TypeScript 为无状态、函数式 React 组件指定(可选)默认 props?

    我正在尝试在 Typescript 中创建一个带有可选 props 和 defaultProps 的无状态 React 组件 对于 React Native 项目 这对于普通 JS 来说是微不足道的 但我对如何在 TypeScript 中实
  • 当模型状态无效时,由于未发送下拉框列表等所有数据,必须重新填充视图模型

    在我的项目中 我创建了一项调查 将该调查链接到一家公司并选择参与的用户 我选择调查模板 添加额外问题并设置有关调查的信息 例如开始和结束日期 总而言之 结果是一个复杂的视图 其中包含来自域的许多部分的数据 我为此视图创建了一个 ViewMo
  • 在 ASP.NET Core 1.0 中使用 SignalR

    我们有一个 ASP NET Core 1 0 RC1 应用程序 我们希望将 SignalR 合并到其中 但是 SignalR 尚未成为 ASP NET Core 1 0 的一部分 有没有办法仍然将 SignalR 合并到我们现有的应用程序中
  • 如何在 Redis 哈希中存储数组?

    我对 Redis 很陌生 想看看是否可行 想象一下我收到这样的数据 account abc name Bob lname Smith account abc name Sam lname Wilson account abc name Jo
  • 这些使用 JavaScript 创建表格的方法有何优缺点?

    我发现在JS中创建表有两种方法 Using insertRow and insertCell var table document getElementById table var row table insertRow 1 var cel
  • 表格行从 itext pdf 中的新页面开始

    我正在使用 PdfPTable 在 pdf 中创建一个表格 表格中有一行 在我的行中 最后一列的数据的高度大于页面的剩余高度 因此 行从下一页开始 而表格标题位于上一页 并且第一页页眉下方有大片空白 任何人都可以建议我如何将行拆分为多个页面
  • 在 JSON.NET 中反序列化具有不同名称的对象列表

    我从一个网站获取数据 该网站返回我非常陌生的 json 格式 我已经寻找解决方案几个小时了 我必须使用这些术语 json 的格式如下 Foo name Foo size human 832 73kB bytes 852718 date hu
  • 如何为气流设置多个调度程序

    我们最近转向了气流 2 0 我想了解设置多个调度程序的过程 我尝试查看各种来源 包括使用天文学家 cli 的程序 但我们没有使用它 对于包括气流文档在内的其他来源 虽然他们提到可以这样做并给出了有关数据库要求的一些详细信息 但他们没有提供有
  • 以最佳方式返回负数的计数

    在按行和列排序的矩阵中搜索 的变体 给定一个按行和列排序的二维矩阵 您必须以最佳方式返回负数的计数 我可以想到这个解决方案 初始化行索引 0 如果行索引 gt 0 行索引 否则应用二分搜索 并用此代码实现 5X5 矩阵 include
  • 打印按值排序的字典

    我基本上是尝试迭代字典并从最大值到最小值打印出键 值 我一直在搜索这个网站 很多人都在使用 lambda 但我不太确定它是如何工作的 所以我现在试图避免它 dictIterator iter sorted bigramDict iterit
  • 如何在悬停时更改 navbarPage 链接的文本颜色(在闪亮的应用程序中)?

    这是我的闪亮应用程序的编辑版本 ui lt tagList fluidPage titlePanel tags head tags style HTML navbar default color red important navbarPa
  • PHP 对象生命周期

    我正在使用 PHP 5 2 如果我在一页上new一个对象 这个对象什么时候会被销毁 当用户转到另一个 php 页面时 对象是否会自动销毁 或者我需要显式调用 destructor 它将在页面加载结束时被破坏 从内存中卸载 或者如果您之前取消
  • SimpleXML 与 DOMDocument 性能对比

    我正在使用 SimpleXML 类构建 RSS 解析器 我想知道使用 DOMDocument 类是否会提高解析器的速度 我正在解析一个至少有 1000 行的 rss 文档 并且我使用了这 1000 行中的几乎所有数据 我正在寻找需要最少时间
  • 如何在 WPF 应用程序中为页面创建模式对话框?

    我有一个 WPF 窗口 其中有一个托管框架的控件 在该框架中我显示不同的页面 有没有办法使对话框仅在页面上模式化 当我显示对话框时 不应单击页面上的任何控件 但应该可以单击不在页面上的同一窗口上的控件 如果我对你的信息的解释是正确的 那么你
  • 正则表达式和 unicode

    我有一个脚本可以解析电视剧集的文件名 例如 show name s01e02 avi 获取剧集名称 来自 www thetvdb com API 并自动将它们重命名为更好的名称 节目名称 01x02 avi 该脚本工作正常 直到您尝试在具有
  • 检查 URL 是否有 http:// 前缀

    在我的应用程序中 当用户添加对象时 还可以添加该对象的链接 然后可以在 webView 中打开该链接 我尝试保存不带 http 前缀的链接 然后在 webView 中打开它 但无法打开它 在webView开始加载之前 有没有办法检查保存的U
  • 在 Dart 中发送 SMTP 电子邮件

    我查看了 API 文档和语言指南 但没有看到任何有关在 Dart 中发送电子邮件的内容 我也检查了这个谷歌群组帖子 https groups google com a dartlang org forum topic misc 5YNvrm