I compiled the c example the ships with libcurl.
The source file is smtp-tls.c
Tried to use it to send mail through gmail and this is the response that I got
* About to connect() to smtp.gmail.com port 465 (#0)
* Trying 74.125.115.109... * connected
* Server auth using Basic with user '[email protected]'
> GET / HTTP/1.1 Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Host: smtp.gmail.com:465
> Accept: */*
* Empty reply from server
* Connection #0 to host smtp.gmail.com left intact
* Server returned nothing (no headers, no data)
* Closing connection #0
What did I miss? I did not modify the code in any way except for the variable inputs. On this machine I am able to send and receive mail using Outlook 2003.
EDIT
Tried a different port. This is the result
* About to connect() to smtp.gmail.com port 587 (#0)
* Trying 74.125.93.109... * connected
* Server auth using Basic with user '[email protected]'
> GET / HTTP/1.1 Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Host: smtp.gmail.com:587
> Accept: */*
220 mx.google.com ESMTP ew54y2x5of95qdz.12 502 5.5.1 Unrecognized command. ew54y2x5of95qdz.12
* Connection #0 to host smtp.gmail.com left intact
* Closing connection #0<br>
EDIT
Main looks like this
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, "[email protected]");
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;
}
EDIT
Looks like the correct URL should be smtp://smtp.gmail.com:587
This gets me further, now I am getting
* 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
EDIT
Libcurl was not built with SSL support
The first output there looks like you're feeding libcurl a HTTP URL.
With your edited question the problem now turned into something completely different. Now it rather looks like you perhaps don't have SSL enabled in your built libcurl?