所有文章 > 技术杂货铺 > 如何使用SMTP发送电子邮件?
如何使用SMTP发送电子邮件?

如何使用SMTP发送电子邮件?

您的应用程序中已使用 SMTP?您可以立即切换当前的电子邮件传递方式。此功能允许您使用普通 SMTP 发送邮件,并且只需指向 Postmark 的 SMTP 服务器即可。

为什么使用 SMTP 而不是 API?

您的 Web 应用程序经常使用 SMTP 发送电子邮件,而迁移到 Postmark 则需要您更改代码。有了 SMTP 访问权限,您只需更改应用程序中的配置设置,即可立即切换到 Postmark 进行发送电子邮件。

它是如何工作的?

您可以使用 SMTP 发送两种方式,具体取决于您的 SMTP 客户端提供的功能。它们之间的唯一区别是配置。

SMTP 客户端是任何 Web 应用程序/电子邮件客户端,允许您配置/输入 SMTP 详细信息(例如 SMTP 服务器、SMTP 用户名、SMTP 密码等),以允许您发送电子邮件。​

使用API 令牌(既可用作用户名又可用作密码)以及可以通过单击服务器、消息流和设置找到的标头。如果未指定标头,Postmark 将通过默认事务流发送。

如果您没有在 SMTP 发送期间添加自定义标头的选项,则可以使用SMTP 令牌。您也可以通过单击服务器,然后单击消息流,然后单击设置来找到它。SMTP 令牌由访问密钥(充当用户名)和密钥(充当密码)组成。密钥应存储在安全的地方,因为生成后就不再可见。如果您需要再次访问它,则需要生成一个新的 SMTP 令牌进行身份验证。

每个消息流的 SMTP 令牌都是唯一的。

您可以通过服务器的“设置”页面 单独启用或禁用服务器的 SMTP 访问。

查看 SMTP 配置详细信息
查看 SMTP 配置详细信息

启用访问后,您将能够连接到 smtp.postmarkapp.com(用于事务消息)或smtp-broadcasts.postmarkapp.com(用于广播消息)。

了解为什么确保将事务消息与广播消息分开如此重要。

连接详细信息

  • 服务器 – smtp.postmarkapp.com 或 smtp-broadcasts.postmarkapp.com
  • 端口 – 25、2525 或 587
  • TLS  – TLS 可通过 STARTTLS  SMTP 扩展使用。这会与我们的 SMTP 服务器建立加密连接,并且所有凭据和内容在传输给我们时都会被加密。我们建议您尽可能使用 TLS。
  • API 令牌和标头或SMTP 令牌
    • API 令牌和标头– 服务器 API 令牌充当用户名和密码。标头 – X-PM-MESSAGE-STREAM:{stream-id}。如果留空,Postmark 将使用默认的“出站”事务流。
    • SMTP 令牌– 访问密钥充当用户名,密钥充当密码。
  • 令牌 认证方法
    • CRAM-MD5  — 仅保护身份验证过程,但如果未启用 TLS,则消息内容仍以纯文本形式发送。
    • DIGEST-MD5  — 仅保护身份验证过程,但是如果未启用 TLS,则消息内容仍以纯文本形式发送。
    • PLAIN  – 不与 TLS 结合使用时,用户名和密码将以明文形式发送。我们不建议在未启用 TLS 的情况下使用此方法。但是,某些较旧的 SMTP 客户端可能不支持其他身份验证方法。请谨慎使用。
    • LOGIN  – 与 PLAIN 方法类似。我们还提供此方法以兼容较旧的 SMTP 客户端。请谨慎使用。

全球分布的 SMTP 服务器

我们在全球多个 AWS 区域维护终端节点。根据您的位置,您将被路由到距离服务器最近的终端节点,以获得最快的响应时间,从而实现极低的延迟。

与 REST API 的区别

REST API 是该服务的主要 API,SMTP 端点被视为迁移路线。使用 SMTP 访问可避免对代码库进行重大更改,但这会牺牲一些仅在通过 API 发送时可用或更易于使用的功能:

  • 许多 Rest API 客户端库都提供高级功能,例如在网络错误时重试多次。当连接到 Postmark 服务器时出现暂时性问题时,此功能可能会有所帮助。 
  • 该 API 还提供 批量发送功能 ,以提高发送大量电子邮件时的性能。 
  • REST API 的另一个重要优势是 响应代码。REST API 将在收到消息后立即向您的应用程序返回成功或错误消息。例如,如果收件人因硬退回而被停用,您将在尝试发送消息时收到通知。此外,响应将提供用于跟踪的消息 ID 以及错误代码,以便妥善处理问题。SMTP 端点将接受所有消息并记录遇到的任何错误的退回,这些退回仍可使用我们的 退回 webhook 或 退回 API 端点访问。
  • 与 API 类似,标签可用于 SMTP 消息。为了在消息中使用标签,您必须将标签包含在名为 X-PM-Tag 的SMTP 标头中。因此,您的 SMTP 客户端必须具有添加此标头的选项。 大多数带有 SMTP 模块的编程语言都包含一种向 SMTP 消息添加自定义标签的方法。每条消息只能使用一个标签。标签的最大大小为 1000 个字符。

总体而言,当您的应用程序与 Postmark 通信时,REST API 的开销会较少,尽管它需要更多的集成工作才能启动。

X-PM-Tag: welcome-email

追踪开启

您可以使用三种方式激活电子邮件的打开跟踪:

  • 为整个服务器打开跟踪
  • 跟踪单封电子邮件的打开情况

跟踪链接

可以使用链接跟踪概述中概述的几种方法启用链接跟踪 。

元数据支持

通过添加额外的 SMTP 标头,可以将元数据添加到使用 SMTP 发送的消息中。如果您添加包含前缀X-PM-Metadata-的 SMTP 标头,它将被注册为元数据字段。例如,以下是您要添加到消息中的 SMTP 标头,用于注册colorclient-id 的自定义元数据值: 

X-PM-Metadata-color: blue
X-PM-Metadata-client-id: 12345

解决 SMTP 问题

由于 SMTP 协议的性质,当我们发现邮件有问题时,我们无法向 SMTP 客户端返回错误。为了解决这一限制,我们将记录一种特殊类型的退回邮件 –  SMTPApiError。退回邮件描述将包含一条包含错误描述的简短消息。检查退回邮件原始来源将显示一条较长的错误消息以及其他详细信息,例如错误代码。原始来源还将包含实际的 SMTP 邮件。您应该定期监控退回邮件或创建一个 退回邮件 webhook, 如果 SMTP 投递失败,它将提醒您。

为什么抄送收件人或密送收件人会与收件人分成单独的邮件?

Postmark SMTP 服务可能不兼容所有 SMTP 客户端。如果收件人未在单个事务中提交给 Postmark,则可能会导致收件人被放入单独的邮件中。具体而言,当使用 Gmail 或 Office 365 等软件客户端生成出站电子邮件时,可能会发生这种情况。

为什么我无法通过 SMTP 服务器进行身份验证?

请确保您使用事务性消息流的 API 令牌作为 SMTP 用户名和密码。此外,请验证您是否已在消息流的设置页面中为您的服务器启用了 SMTP 访问权限。

为什么我的自定义消息 ID 没有通过 Postmark 发送?

MessageID首先,请注意(由 Postmark 生成,无法更改)和之间的区别,Message-ID后者是您可以通过 SMTP 标头设置的自定义值。Postmark MessageID始终是 webhook 事件 JSON 中“MessageID”字段中返回的内容,以便您可以识别 Postmark 消息以进行后续 API 调用。

默认情况下,Postmark 将替换出站 SMTP 邮件的所有标头。但是,保留某些依赖这些标头的应用程序的值Message-ID会很有用。为确保 Postmark 不会替换您的自定义或原始标头,请添加一个名为 的附加标头,  其值为 。然后,Postmark 将传递邮件的任何原始标头。Message-IDMessage-IDX-PM-KeepIDtrueMessage-ID

X-PM-KeepID: true

当使用 SMTP 发送时遇到问题时我还可以尝试什么?

  • 尝试在 SMTP 设置中使用所有可用端口(25、2525 和 587)。有时端口可能会拥塞并导致暂时出现问题,或者被特定 ISP 阻止。
  • 确保您使用服务器API 令牌作为用户名和密码,而不是您的帐户 API 令牌。
  • 检查您的防火墙和网络,确保它们没有阻止我们的任何SMTP 端点。

编码和字符集故障排除

Postmark 会尽力支持所有可能的编码、字符集和电子邮件客户端。偶尔,有些客户端和字符集的组合无法通过 Postmark 正确处理。例如,Mozilla Thunderbird 使用“8bit”的内容传输编码发送 ISO-8859-2 字符集,该编码未添加正确的 BOM 签名。因此,某些特殊字符可能无法通过 Postmark 正确处理。我们建议使用 Quoted-Printable,因为它与邮件处理系统广泛兼容。

#你可能也喜欢这些API文章!
搜索、试用、集成国内外API!
幂简集成API平台已有 4581种API!
API大全