猿问

使用 Golang 通过 G Suite 发送电子邮件

我已经设置了 G Suite 帐户并启用了 SMTP 中继服务。中继服务当前配置为只接受来自我的网络服务器 IP 地址的邮件,不需要 SMTP 身份验证或 TLS 加密。
此链接告诉我应该能够将邮件发送到端口 25(或 465/587)上的 smtp-relay.gmail.com。

这一切都很好。我有一个非常简单的 go 脚本可以在这里发送电子邮件。

package main


import (

        "log"

        "net/smtp"

        "os"

)


func main() {

        args := os.Args[1:]

        to := args[0]

        body := args[1]

        from := "[my g-suite user account name]"

        msg := "From: " + from + "\n" + "To: " + to + "\n" + 

                "Subject: Hello Friend\n\n" + body

        err := smtp.SendMail("smtp-relay.gmail.com:25",nil,

                from, []string{to}, []byte(msg))

        if err != nil {

                log.Printf("smtp err :%s\n",err)

        } else {

                log.Printf("Email sent\n")

        }


        log.Printf("email sent\n")

}

当我运行它时,我得到以下恐慌


2018/11/29 12:24:22 smtp err :dial tcp 74.125.195.28:25: connect: no route to host

我明白这个错误告诉我的是什么,但我终生无法解决它。我认为这是我的防火墙设置的问题。我试过刷新我的 iptables 并禁用 ufw 但我每次都得到相同的结果。


我还尝试使用 mutt 和 sendmail(具有类似设置)从该网络服务器发送邮件。


关于我应该寻找什么的任何建议?我做了很多搜索并尝试了其他几个脚本,但总是得到相同的结果。


编辑

在尝试了几个不同的选项后,例如使用现有帐户的常规 gmail,使用 sendmail 或 ssmtp 我在尝试发送邮件时查看了 tcpdump。Wireshark 显示与邮件服务器的通信为“通信管理过滤”。我的意思是托管服务提供商正在过滤端口 25,465 和 587,因为我已经尝试了所有端口并且禁用了我的规则。


蝴蝶刀刀
浏览 89回答 1
1回答

慕侠2389804

托管服务提供商正在过滤 SMTP 端口。然后开了一张服务票并调整了这些过滤器。邮件现在工作正常
随时随地看视频慕课网APP

相关分类

Go
我要回答