使用go发送邮件的注意事项

服务器设置 SPF设置 如果你使用的是企业邮箱,可能需要添加SPF记录。SPF(Sender Policy Framework) 是电子邮件系统中发送方策略框架的缩写,它的内容写在DNS的txt类型的记录里面;作用是防止别人伪造你的邮件地址进行发信,是一种非常高效的反垃圾邮件解决方案。如果你的服务器没有设置邮件的SPF,那么在发送邮件到Gmail等邮箱地址时,会发生退信。 一般给域名添加SPF记录的方式是添加一条TXT记录。以腾讯企业邮箱为例,添加的TXT记录值是v=spf1 include:spf.mail.qq.com -all 使用go可以实现查询域名的TXT信息。 func TestNetLookupTxt(t *testing.T) { txt, err := net.LookupTXT("czyt.tech") if err != nil { t.Fatal(err) } t.Log(txt) } DKIM 腾讯企业邮箱 DKIM配置说明 DMARC DMARC(Domain-based Message Authentication, Reporting & Conformance)是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,邮件收发双方建立了邮件反馈机制,便于邮件发送方和邮件接收方共同对域名的管理进行完善和监督。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。这里同样以腾讯企业邮箱为例。在DNS管理的地方添加以下DMARC记录: 主机记录: _dmarc 记录类型:TXT 记录值: v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com 注意:DMARC记录里,有一个值可由你来自定义: p:用于告知收件方,当检测到某封邮件存在伪造发件人的情况,收件方要做出什么处理; p=none; 为收件方不作任何处理 p=quarantine; 为收件方将邮件标记为垃圾邮件 p=reject; 为收件方拒绝该邮件 rua:用于在收件方检测后,将一段时间的汇总报告,发送到哪个邮箱地址。 ruf:用于当检测到伪造邮件时,收件方须将该伪造信息的报告发送到哪个邮箱地址。ruf=mailto:xxx@xxxxxx.com; DMARC是基于DKIM和SPF的,所以开启DMARC必须先开启DKIM或SPF任意一种 消息体 Message-Id 对于Gmail等邮箱,如果你在发送邮箱的时候没有带上Message-Id也会触发退信。这时需要你在邮件发送的Header中添加Message-Id.例如<4867a3d78a50438bad95c0f6d072fca5@mailbox01.contoso.com>。可以参考微软的相关文档 邮件模板 对于常见的邮件模板,可以使用Hermes这个Golang库。下面是一个例子: package main import ( "github.com/matcornic/hermes/v2" ) type inviteCode struct { } func (w *inviteCode) Name() string { return "invite_code" } func (w *inviteCode) Email() hermes....

命令行的艺术

本文摘自项目 https://github.com/jlevy/the-art-of-command-line 命令行的艺术 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是许多作者和译者共同的成果。 这里的部分内容 首次 出现 于 Quora, 但已经迁移到了 GitHub,并由众多高手做出了许多改进。 如果你在本文中发现了错误或者存在可以改善的地方,请贡献你的一份力量。 前言 涵盖范围: 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及简洁(避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 本文主要为 Linux 所写,但在仅限 OS X 系统章节和仅限 Windows 系统章节中也包含有对应操作系统的内容。除去这两个章节外,其它的内容大部分均可在其他类 Unix 系统或 OS X,甚至 Cygwin 中得到应用。 本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。 注意事项: 为了能在一页内展示尽量多的东西,一些具体的信息可以在引用的页面中找到。我们相信机智的你知道如何使用 Google 或者其他搜索引擎来查阅到更多的详细信息。文中部分命令需要您使用 apt-get,yum,dnf,pacman, pip 或 brew(以及其它合适的包管理器)来安装依赖的程序。 遇到问题的话,请尝试使用 Explainshell 去获取相关命令、参数、管道等内容的解释。 基础 学习 Bash 的基础知识。具体地,在命令行中输入 man bash 并至少全文浏览一遍; 它理解起来很简单并且不冗长。其他的 shell 可能很好用,但 Bash 的功能已经足够强大并且到几乎总是可用的( 如果你只学习 zsh,fish 或其他的 shell 的话,在你自己的设备上会显得很方便,但过度依赖这些功能会给您带来不便,例如当你需要在服务器上工作时)。 熟悉至少一个基于文本的编辑器。通常而言 Vim (vi) 会是你最好的选择,毕竟在终端中编辑文本时 Vim 是最好用的工具(甚至大部分情况下 Vim 要比 Emacs、大型 IDE 或是炫酷的编辑器更好用)。...