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

时间:2018-11-29 20:29:13

标签: email go smtp gsuite

我已经设置了G Suite帐户,并且启用了SMTP中继服务。当前将中继服务配置为仅接受来自我的Web服务器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显示与邮件服务器的通信为“管理性过滤通信”。我认为这是因为托管服务提供商已经尝试了所有端口,并且已禁用规则,因此它们正在过滤端口25,465和587。

1 个答案:

答案 0 :(得分:0)

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

相关问题