使用libcurl的SMTP邮件

我用libcurl编译了c示例。
源文件是smtp-tls.c
试图用它来通过Gmail发送邮件,这是我得到的回复

  • 即将连接()到smtp.gmail.com端口465(#0)
  • 尝试74.125.115.109 … *已连接
  • 使用Basic的用户’xxxxxxx@gmail.com’的服务器validation

    GET / HTTP / 1.1授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx主持人:smtp.gmail.com:465接受: /

  • 来自服务器的空回复

  • 连接#0到主机smtp.gmail.com完好无损
  • 服务器什么都没有返回(没有标题,没有数据
  • 关闭连接#0

我错过了什么? 除了变量输入之外,我没有以任何方式修改代码。 在这台机器上,我可以使用Outlook 2003发送和接收邮件。
编辑
试过一个不同的港口。 结果就是这样

  • 即将连接()到smtp.gmail.com端口587(#0)
  • 尝试74.125.93.109 …… *已连接
  • 使用Basic的用户’xxxxxxx@gmail.com’的服务器validation

    GET / HTTP / 1.1授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx主持人:smtp.gmail.com:587接受: /

220 mx.google.com ESMTP ew54y2x5of95qdz.12 502 5.5.1无法识别的命令。 ew54y2x5of95qdz.12 *连接#0到主机smtp.gmail.com保持原样*关闭连接#0

编辑
Main看起来像这样

 int main() { CURL *curl; CURLcode res; struct curl_slist *recipients = NULL; struct upload_status upload_ctx; upload_ctx.lines_read = 0; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "smtp://gmail.com:587"); curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); curl_easy_setopt(curl, CURLOPT_USERNAME, "xxxxxx@gmail.com"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "xxxxxxxx"); curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM); recipients = curl_slist_append(recipients, TO); recipients = curl_slist_append(recipients, CC); curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source); curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); res = curl_easy_perform(curl); curl_slist_free_all(recipients); curl_easy_cleanup(curl); } return 0; } 

编辑
看起来正确的URL应该是smtp://smtp.gmail.com:587
这让我更进一步,现在我得到了

 * About to connect() to smtp.gmail.com port 587 (#0) * Trying 74.125.45.108... * connected  EHLO my_computer_name < 250-mx.google.com at your service, < 250-SIZE 35882577 < 250-8BITMIME < 250-STARTTLS  QUIT < 221 2.0.0 closing connection j26srtuiopnann.7 * Closing connection #0 * Login denied 

编辑
Libcurl不是使用SSL支持构建的

第一个输出看起来像是在为libcurl提供一个HTTP URL。

根据您编辑的问题,问题现在变成了完全不同的问题。 现在看起来你可能没有在你的内置libcurl中启用SSL?

我的程序有这个错误Connect #0 to host smtp.gmail.com left intact failed 。 但它正在发挥作用。 我可以通过Gmail帐户发送邮件。 但我不知道这个错误的原因。

我使用命令curl-config --feature并获得结果:

 SSL IPv6 libz IDN NTLM NTLM_WB