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

Sending email through G Suite using Golang

我已经设置了 G Suite 帐户并启用了 SMTP 中继服务。中继服务当前配置为仅接受来自我的网络服务器 IP 地址的邮件,不需要 SMTP 身份验证或 TLS 加密。
This link 告诉我应该能够将邮件发送到端口 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 显示与邮件服务器的通信为"Communication administratively filtered"。我的意思是托管服务提供商正在过滤端口 25,465 和 587,因为我已经尝试了所有端口并且禁用了我的规则。

已解决。
我的托管服务提供商正在过滤 SMTP 端口。我开了一张服务票并调整了这些过滤器。邮件现在可以正常使用了