我用libcurl编译了c示例--船只。
源文件是smtp-tls.c
试着用它通过gmail发送邮件,这是我得到的回复
GET / HTTP/1.1授权:基本
从server
)
我错过了什么?除了变量输入之外,我没有以任何方式修改代码。在这台机器上,我可以使用Outlook 2003收发邮件。
编辑
试过不同的端口。这就是结果
220 mx.google.com ESMTP ew54y2x5 95qdz.12 502 5.5.1未识别命令。95 qdz.12*与主机smtp.gmail.com的连接#0保持完整*关闭连接#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;
}编辑
看起来正确的网址应该是smtp://smtp.gmail.com:587
这让我走得更远,现在我
* About to connect() to smtp.gmail.com port 587 (#0)
* Trying 74.125.45.108... * connected
< 220 mx.google.com ESMTP j26srtuiopnann.7
> EHLO my_computer_name
< 250-mx.google.com at your service,
< 250-SIZE 35882577
< 250-8BITMIME
< 250-STARTTLS
< 250 ENHANCEDSTATUSCODES
* No known auth mechanisms supported!
> QUIT
< 221 2.0.0 closing connection j26srtuiopnann.7
* Closing connection #0
* Login denied编辑
Libcurl不是用SSL支持构建的。
发布于 2011-10-18 21:31:01
那里的第一个输出看起来像是在给libcurl提供一个HTTP。
你经过编辑的问题现在变成了完全不同的问题。现在看来,您可能在构建的libcurl中没有启用SSL吗?
发布于 2012-03-08 01:51:27
我的程序有一个错误Connect #0 to host smtp.gmail.com left intact failed。但它起作用了。我可以通过gmail帐户发送邮件。但我不知道这就是错误的原因。
我使用命令curl-config --feature并得到结果:
SSL
IPv6
libz
IDN
NTLM
NTLM_WBhttps://stackoverflow.com/questions/7809693
复制相似问题