用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的应用程序密码在哪儿改呢?
- 登录您的Google账户。
- 进入"安全性"设置。
- 在"登录Google"部分,找到"应用专用密码"选项。
- 点击"应用专用密码"。
- 选择您要为哪个应用/设备生成密码。
- 点击"生成"。
- 系统会生成一个16位字符的应用专用密码。
- 复制这个密码并在相应的应用或设备中使用它。
- 点击"完成"。
- 如果要撤销某个应用专用密码的访问权限,可以在应用专用密码列表中找到它并点击"删除"。
需要注意的是:
- 您需要先开启两步验证才能使用应用专用密码功能。
- 每个应用专用密码只能查看一次,所以请妥善保存。
- 更改Google账户主密码后,所有应用专用密码会被自动撤销,需要重新生成。
- 对于大多数现代应用,建议使用"使用Google登录"功能,而不是应用专用密码。