# 在开始安装前进行测试电子邮件设置

**URL:** https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658
**Category:** Feature
**Tags:** email
**Created:** [2024年四月13日 11:09 UTC](https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658 "2024-04-13T11:09:25Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![JustinZ](https://avatars.discourse-cdn.com/v4/letter/j/e68b1a/32.png) [@JustinZ](https://meta.discourse.org/u/JustinZ)
#### Post date: [2024年四月13日 11:09 UTC](https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658/1 "2024-04-13T11:09:25Z")

</div>

discourse-doctor 工具可以发送测试电子邮件。此功能也应添加到 discourse-setup 工具中。在设置整个软件堆栈之前，请快速进行电子邮件测试，以验证用户输入的 SMTP 数据是否正常工作。正如注释所述，如果电子邮件设置不正确，该功能将无法运行。

如果安装人员输入的任何数据有误，这可以节省大量时间。

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024年四月13日 13:26 UTC](https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658/2 "2024-04-13T13:26:13Z")

</div>

嗯。看起来像这样进行半自动的 SMTP 测试是可行的：

```plaintext
echo Hello world > /tmp/mail.txt
curl -v smtp://$DISCOURSE_SMTP_ADDRESS:$DISCOURSE_SMTP_PORT \
  --mail-from noreply@$DISCOURSE_HOSTNAME \
  --mail-rcpt $(echo $DISCOURSE_DEVELOPER_EMAILS | cut -d ',' -f 1) \
  --user $DISCOURSE_SMTP_USER_NAME:"$DISCOURSE_SMTP_PASSWORD" \
  --upload-file /tmp/mail.txt 

```

所以应该可以进行这样的测试。我担心它会有很多误报和漏报，但也许在失败时打印一个警告可以帮助一些人。

也许更好的主意是另一个脚本（`discourse-mail-check`？），它会在你遇到麻烦时进行一次快速而粗略的测试。

---

<div class="post-metadata">

### Author: ![JustinZ](https://avatars.discourse-cdn.com/v4/letter/j/e68b1a/32.png) [@JustinZ](https://meta.discourse.org/u/JustinZ)
#### Post date: [2024年四月14日 04:20 UTC](https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658/3 "2024-04-14T04:20:08Z")

</div>

我只是希望在用户输入SMTP详细信息后直接进行测试。它会向用户提供的地址发送一封测试电子邮件，并询问用户是否收到电子邮件，如果收到，则继续安装。如果未收到，他们可以重新测试或更改SMTP配置并重试。

---

<div class="post-metadata">

### Author: ![wal](https://avatars.discourse-cdn.com/v4/letter/w/d6d6ee/32.png) [@wal](https://meta.discourse.org/u/wal)
#### Post date: [2024年八月7日 14:49 UTC](https://meta.discourse.org/t/test-email-setup-before-the-installation-is-started/303658/4 "2024-08-07T14:49:04Z")

</div>

正如我在此处帖子中所述：[Install Discourse on Amazon Web Services (AWS) with Lightsail, SES, and Route 53 - #4 by wal](https://meta.discourse.org/t/install-discourse-on-amazon-web-services-aws-with-lightsail-ses-and-route-53/239343/4?u=wal%EF%BC%8C%E5%9C%A8%E4%BD%BF%E7%94%A8) `telnet` 通过此处描述的方法运行完整的 `discourse-setup` 脚本之前，我能够发送测试电子邮件。

> <https://serverfault.com/questions/49935/easiest-way-to-send-a-test-email-from-a-server-to-test-settings>

值得注意的是，我使用了端口 587 而不是那里显示的 25，并且您需要确保对您的 SMTP 用户名和密码进行 base64 编码。

该帖子中还链接了 AWS 提供的一个脚本，该脚本显示了如何使用 `openssl` 命令执行相同的操作（链接在此处；[https://docs.aws.amazon.com/ses/latest/dg/creating-configuration-sets.html）。](https://docs.aws.amazon.com/ses/latest/dg/creating-configuration-sets.html%EF%BC%89%E3%80%82)

如果您不使用 AWS SES 作为您的电子邮件服务器，您可能需要稍微调整一下脚本，但总的来说，我认为其中一个或两个脚本应该有助于您在安装前验证电子邮件（这就是我所做的）。

虽然我同意理想情况下应该有一种在安装前测试电子邮件的方法，但我认为最好将其作为 Discourse 的一个单独的独立脚本来发布，这样您就可以在不经历整个设置过程的情况下运行它，而该过程可能需要大约 10 分钟。
