email - Go:连接到 SMTP 服务器并在一个连接中发送多封电子邮件?

标签 email go smtp smtp-auth

我正在编写一个包,我打算与本地 SMTP 服务器建立一个初始连接,然后它等待一个 channel ,该 channel 将填充电子邮件以在需要发送时发送。

查看 net/http 似乎期望每次发送电子邮件时都应拨入 SMTP 服务器并进行身份验证。我当然可以拨号和验证一次,保持连接打开并在收到新电子邮件时添加它们吗?

查看 smtp.SendMail 的源代码,我不知道如何做到这一点,因为似乎没有办法回收 *Client: http://golang.org/src/net/smtp/smtp.go?s=7610:7688#L263

*Client 有一个Reset 函数,但是它的描述是:

 Reset sends the RSET command to the server, aborting the current mail transaction.

我不想中止当前的邮件交易,我想有多个邮件交易。

如何保持与 SMTP 服务器的连接打开并在该连接上发送多封电子邮件?

最佳答案

您是正确的,smtp.SendMail 没有提供重用连接的方法。

如果你想要细粒度的控制,你应该使用持久的客户端连接。这将需要更多地了解 smtp 命令和协议(protocol)。

  1. 使用 smtp.Dial 打开连接并创建客户端对象。
  2. 根据需要使用 client.Helloclient.Authclient.StartTLS
  3. 根据需要使用RcptMailData发送消息。
  4. client.Quit() 完成后关闭连接。

关于email - Go:连接到 SMTP 服务器并在一个连接中发送多封电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30450221/

相关文章:

ruby-on-rails - Action Mailer attachments.inline 显示为普通附件,而不是内联

css - 添加 <br/> 标签中断后 gmail 应用程序中的响应式布局

python - 如何在 Django 中创建 'notify me of followup comments via e-mail' 按钮?

installation - 在 OSX 上安装 go 调试器

java - Log4j 通过属性向多个用户发送电子邮件

smtp - Webapp 通过 gmail SMTP 发送电子邮件是个坏主意吗?

javascript - 将电子邮件发送到多个地址的脚本

c - 如何在 go 中将字节转换为 struct(c struct)?

go - 将通用结构/接口(interface)传递给函数并返回它

php - 如何在 php 中使用 SMTP 发送电子邮件