用docker部署一个Discourse论坛过程2 - 更新SMTP设置和设置gmail应用专用密码

首先,先更新您的 Discourse 配置:

编辑 app.yml 文件:

sudo nano /var/discourse/containers/app.yml

更新 SMTP 设置如下:(以我的为例)

DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 邮箱账号xxx@gmail.com
DISCOURSE_SMTP_PASSWORD: "gmail应用专用密码"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

保存并退出编辑器。

重新构建 Discourse:

cd /var/discourse
sudo ./launcher rebuild app

验证 SMTP 设置是否正确:

进入 Discourse 容器:

sudo ./launcher enter app

在容器内,运行 Rails 控制台:

rails c

在 Rails 控制台中,尝试发送测试邮件:

ActionMailer::Base.smtp_settings = {
  address: 'smtp.gmail.com',
  port: 587,
  domain: 'gmail.com',
  user_name: '邮箱账号xxx@gmail.com',
  password: 'gmail应用专用密码',
  authentication: 'login',
  enable_starttls_auto: true
}

ActionMailer::Base.mail(to: 'your-test-email@example.com', from: '邮箱账号xxx@gmail.com', subject: '测试邮件', body: '这是一封来自 Discourse的测试邮件').deliver_now

替换 'your-test-email@example.com' 为你的另一个邮箱地址,用于接收测试邮件。

如果邮件发送成功,您应该会看到类似以下的输出:

=> #<Mail::Message:70366680880580, Multipart: false, Headers: <Date: ...>, <From: ...>, <To: ...>, <Message-ID: ...>, <Subject: Test Email>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>>

那么gmail的应用程序密码在哪儿改呢?

  1. 登录您的Google账户。
  2. 进入"安全性"设置。
  3. 在"登录Google"部分,找到"应用专用密码"选项。
  4. 点击"应用专用密码"。
  5. 选择您要为哪个应用/设备生成密码。
  6. 点击"生成"。
  7. 系统会生成一个16位字符的应用专用密码。
  8. 复制这个密码并在相应的应用或设备中使用它。
  9. 点击"完成"。
  10. 如果要撤销某个应用专用密码的访问权限,可以在应用专用密码列表中找到它并点击"删除"。

需要注意的是:

  • 您需要先开启两步验证才能使用应用专用密码功能。
  • 每个应用专用密码只能查看一次,所以请妥善保存。
  • 更改Google账户主密码后,所有应用专用密码会被自动撤销,需要重新生成。
  • 对于大多数现代应用,建议使用"使用Google登录"功能,而不是应用专用密码。