#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#define GMAIL_USERNAME "your_email@gmail.com"
#define GMAIL_PASSWORD "your_password"
#define SMTP_SERVER "smtps://smtp.gmail.com"
#define SMTP_PORT 465
#define EMAIL_FROM GMAIL_USERNAME
#define EMAIL_TO "recipient@example.com"
#define EMAIL_SUBJECT "Hello"
#define EMAIL_BODY "Hi there,\n\nThis is an automated email."
int main() {
CURL *curl;
CURLcode res = CURLE_OK;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_USERNAME, GMAIL_USERNAME);
curl_easy_setopt(curl, CURLOPT_PASSWORD, GMAIL_PASSWORD);
curl_easy_setopt(curl, CURLOPT_URL, SMTP_SERVER);
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, EMAIL_FROM);
struct curl_slist *recipients = NULL;
recipients = curl_slist_append(recipients, EMAIL_TO);
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: text/plain; charset=\"UTF-8\"");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_READDATA, NULL);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, EMAIL_BODY);
curl_easy_setopt
(curl
, CURLOPT_INFILESIZE
, (long
)strlen(EMAIL_BODY
));
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr
, "curl_easy_perform() failed: %s\n", curl_easy_strerror
(res
));
curl_slist_free_all(recipients);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
} else {
fprintf(stderr
, "Failed to initialize libcurl\n"); return 1;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN1cmwvY3VybC5oPgoKI2RlZmluZSBHTUFJTF9VU0VSTkFNRSAieW91cl9lbWFpbEBnbWFpbC5jb20iCiNkZWZpbmUgR01BSUxfUEFTU1dPUkQgInlvdXJfcGFzc3dvcmQiCgojZGVmaW5lIFNNVFBfU0VSVkVSICJzbXRwczovL3NtdHAuZ21haWwuY29tIgojZGVmaW5lIFNNVFBfUE9SVCA0NjUKCiNkZWZpbmUgRU1BSUxfRlJPTSBHTUFJTF9VU0VSTkFNRQojZGVmaW5lIEVNQUlMX1RPICJyZWNpcGllbnRAZXhhbXBsZS5jb20iCiNkZWZpbmUgRU1BSUxfU1VCSkVDVCAiSGVsbG8iCiNkZWZpbmUgRU1BSUxfQk9EWSAiSGkgdGhlcmUsXG5cblRoaXMgaXMgYW4gYXV0b21hdGVkIGVtYWlsLiIKCmludCBtYWluKCkgewogICAgQ1VSTCAqY3VybDsKICAgIENVUkxjb2RlIHJlcyA9IENVUkxFX09LOwoKICAgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogICAgaWYgKGN1cmwpIHsKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVNFUk5BTUUsIEdNQUlMX1VTRVJOQU1FKTsKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUEFTU1dPUkQsIEdNQUlMX1BBU1NXT1JEKTsKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBTTVRQX1NFUlZFUik7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VTRV9TU0wsIENVUkxVU0VTU0xfQUxMKTsKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfTUFJTF9GUk9NLCBFTUFJTF9GUk9NKTsKCiAgICAgICAgc3RydWN0IGN1cmxfc2xpc3QgKnJlY2lwaWVudHMgPSBOVUxMOwogICAgICAgIHJlY2lwaWVudHMgPSBjdXJsX3NsaXN0X2FwcGVuZChyZWNpcGllbnRzLCBFTUFJTF9UTyk7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX01BSUxfUkNQVCwgcmVjaXBpZW50cyk7CgogICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIE5VTEwpOwogICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKCiAgICAgICAgc3RydWN0IGN1cmxfc2xpc3QgKmhlYWRlcnMgPSBOVUxMOwogICAgICAgIGhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVwiVVRGLThcIiIpOwogICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzKTsKCiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQUREQVRBLCBOVUxMKTsKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVEZJRUxEUywgRU1BSUxfQk9EWSk7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0lORklMRVNJWkUsIChsb25nKXN0cmxlbihFTUFJTF9CT0RZKSk7CgogICAgICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwoKICAgICAgICBpZiAocmVzICE9IENVUkxFX09LKQogICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9wZXJmb3JtKCkgZmFpbGVkOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwoKICAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKHJlY2lwaWVudHMpOwogICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoaGVhZGVycyk7CiAgICAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgICB9IGVsc2UgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybFxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#define GMAIL_USERNAME "your_email@gmail.com"
#define GMAIL_PASSWORD "your_password"
#define SMTP_SERVER "smtps://smtp.gmail.com"
#define SMTP_PORT 465
#define EMAIL_FROM GMAIL_USERNAME
#define EMAIL_TO "recipient@example.com"
#define EMAIL_SUBJECT "Hello"
#define EMAIL_BODY "Hi there,\n\nThis is an automated email."
int main() {
CURL *curl;
CURLcode res = CURLE_OK;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_USERNAME, GMAIL_USERNAME);
curl_easy_setopt(curl, CURLOPT_PASSWORD, GMAIL_PASSWORD);
curl_easy_setopt(curl, CURLOPT_URL, SMTP_SERVER);
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, EMAIL_FROM);
struct curl_slist *recipients = NULL;
recipients = curl_slist_append(recipients, EMAIL_TO);
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: text/plain; charset=\"UTF-8\"");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_READDATA, NULL);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, EMAIL_BODY);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)strlen(EMAIL_BODY));
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
curl_slist_free_all(recipients);
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
} else {
fprintf(stderr, "Failed to initialize libcurl\n");
return 1;
}
return 0;
}