使用 mailhog 和 golang 发送邮件时未加密的连接
Unencrypted connection when sending mail using mailhog and golang
这些代码在使用 gmail 时正常工作(AllowLessSecureApp 开启),但不适用于 mailhog(unencrypted connection
错误),这些是要重现的最少代码:
package main
import (
"crypto/tls"
"fmt"
"net/smtp"
"github.com/jordan-wright/email"
"github.com/stretchr/testify/assert"
)
func TestSendMail(t *testing.T) {
m := struct{
Host string
Port int
User string
Pass string
}{
Host: `local.test`, // resolved to 127.0.0.1 in /etc/hosts
Port: 1025,
User: `test@local.test`,
Pass: `test`,
}
e := email.NewEmail()
e.From = `test@local.test`
e.To = []string{`test@local.test`}
e.Subject = `test mail`
host, _ := os.Hostname()
e.Text = []byte(`testing email from ` + host)
err := e.SendWithStartTLS(fmt.Sprintf("%s:%d", m.Host, m.Port), smtp.PlainAuth("", m.User, m.Pass, m.Host), &tls.Config{InsecureSkipVerify: true})
assert.NoError(t, err)
}
docker-compose.yml
:
version: "3.9"
services:
mailhog:
image: mailhog/mailhog
container_name: test_mailhog
env_file:
- backend/.env # not used
ports:
- 1025:1025 # smtp server
- 8025:8025 # web ui
restart: unless-stopped
或者有任何解决方法吗?例如。 docker-compose?
上的一些 TLS 代理
可能是 mailhog 没有正确的 TLS 证书,它在本地主机上不使用 TLS 进行侦听,请尝试使用函数 https://pkg.go.dev/github.com/jordan-wright/email#Email.Send 发送电子邮件
err := e.Send(fmt.Sprintf("%s:%d", m.Host, m.Port),smtp.CRAMMD5Auth(m.User,m.Pass))
mailhog 似乎不支持传入的 TLS(即作为 TLS 服务器工作)- 请参阅问题 STARTTLS support #296。
这些代码在使用 gmail 时正常工作(AllowLessSecureApp 开启),但不适用于 mailhog(unencrypted connection
错误),这些是要重现的最少代码:
package main
import (
"crypto/tls"
"fmt"
"net/smtp"
"github.com/jordan-wright/email"
"github.com/stretchr/testify/assert"
)
func TestSendMail(t *testing.T) {
m := struct{
Host string
Port int
User string
Pass string
}{
Host: `local.test`, // resolved to 127.0.0.1 in /etc/hosts
Port: 1025,
User: `test@local.test`,
Pass: `test`,
}
e := email.NewEmail()
e.From = `test@local.test`
e.To = []string{`test@local.test`}
e.Subject = `test mail`
host, _ := os.Hostname()
e.Text = []byte(`testing email from ` + host)
err := e.SendWithStartTLS(fmt.Sprintf("%s:%d", m.Host, m.Port), smtp.PlainAuth("", m.User, m.Pass, m.Host), &tls.Config{InsecureSkipVerify: true})
assert.NoError(t, err)
}
docker-compose.yml
:
version: "3.9"
services:
mailhog:
image: mailhog/mailhog
container_name: test_mailhog
env_file:
- backend/.env # not used
ports:
- 1025:1025 # smtp server
- 8025:8025 # web ui
restart: unless-stopped
或者有任何解决方法吗?例如。 docker-compose?
上的一些 TLS 代理可能是 mailhog 没有正确的 TLS 证书,它在本地主机上不使用 TLS 进行侦听,请尝试使用函数 https://pkg.go.dev/github.com/jordan-wright/email#Email.Send 发送电子邮件
err := e.Send(fmt.Sprintf("%s:%d", m.Host, m.Port),smtp.CRAMMD5Auth(m.User,m.Pass))
mailhog 似乎不支持传入的 TLS(即作为 TLS 服务器工作)- 请参阅问题 STARTTLS support #296。