首页 文章

使用TLS和普通身份验证将电子邮件发送到Gmail的SMTP服务器

提问于
浏览
3

我有一个情况 . 我想连接到gmail smtp服务器并从我的Gmail帐户发送电子邮件 . 因为gmail smtp服务器使用PLAIN身份验证和TLS . 我连接到gmail smtp服务器 . 和服务器响应如下 .

220 mx.google.com ESMTP n21sm810716wed.43

然后我发送它“AUTH PLAIN”并发送“EHLO”命令 . 服务器响应如下:

503 5.5.1首先是EHLO / HELO . n21sm810716wed.43

然后我再次发送它“EHLO”命令,响应是:

250-mx.google.com为您服务,[203.99.179.10]

在此之后无论我给它什么 . 它打印一系列行和退出 . 它给出的响应顺序是;

250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250 ENHANCEDSTATUSCODES

我该怎么做才能让我登录并发送电子邮件给我?任何帮助或建议将不胜感激 . 谢谢

另见

使用SMTP,Gmail和STARTTLS

3 回答

  • 3

    你面临三个问题:

    首先,您是EHLO命令的 not reading entire response .

    此命令具有 multi-line 响应:

    250-mx.google.com at your service, [203.99.179.10] 
    250-SIZE 35882577 
    250-8BITMIME 
    250-STARTTLS 
    250 ENHANCEDSTATUSCODES
    

    注意最后250个代码后的 space - 这意味着这是最后一个响应行 .

    第二:EHLO应该是您发送的 first 命令 .

    第三:Gmail不允许在不使用SSL的情况下登录,无论是隐式(465端口)还是显式(STARTTLS命令)

  • 0

    除非我们与服务器 Build 安全连接,否则我们无法使用STARTTLS . 简单的SMTP库和telnet不支持STARTTLS . 为此,我不得不使用GNUTLS与服务器进行握手并交换证书以 Build 安全连接 . 之后我发送STARTTLS,它运行正常 . 希望这有助于其他面临类似的问题 . 谢谢

  • 1

    您应该在给定的响应后发出STARTTLS命令 . 这是一个SMTP会话示例,在端口587上的 smtp.gmail.com 上使用 netcat 获得:

    220 mx.google.com ESMTP z83sm46627weq.20
    EHLO localhost
    250-mx.google.com at your service, [109.114.60.32]
    250-SIZE 35882577
    250-8BITMIME
    250-STARTTLS
    250 ENHANCEDSTATUSCODES
    STARTTLS
    220 2.0.0 Ready to start TLS
    

相关问题