June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
99
Task/Send-email/C/send-email.c
Normal file
99
Task/Send-email/C/send-email.c
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
/*Abhishek Ghosh, 13th June 2018*/
|
||||
|
||||
#include <curl/curl.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define from "<sender@duniya.com>"
|
||||
#define to "<addressee@gmail.com>"
|
||||
#define cc "<info@example.org>"
|
||||
|
||||
static const char *payload_text[] = {
|
||||
"Date: Mon, 13 Jun 2018 11:30:00 +0100\r\n",
|
||||
"To: " to "\r\n",
|
||||
"From: " from " (Example User)\r\n",
|
||||
"Cc: " cc " (Another example User)\r\n",
|
||||
"Message-ID: <ecd7db36-10ab-437a-9g3a-e652b9458efd@"
|
||||
"rfcpedant.example.org>\r\n",
|
||||
"Subject: Sanding mail via C\r\n",
|
||||
"\r\n",
|
||||
"This mail is being sent by a C program.\r\n",
|
||||
"\r\n",
|
||||
"It connects to the GMail SMTP server, by far, the most popular mail program of all.\r\n",
|
||||
"Which is also probably written in C.\r\n",
|
||||
"To C or not to C..............\r\n",
|
||||
"That is the question.\r\n",
|
||||
NULL
|
||||
};
|
||||
|
||||
struct upload_status {
|
||||
int lines_read;
|
||||
};
|
||||
|
||||
static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
|
||||
{
|
||||
struct upload_status *upload_ctx = (struct upload_status *)userp;
|
||||
const char *data;
|
||||
|
||||
if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
data = payload_text[upload_ctx->lines_read];
|
||||
|
||||
if(data) {
|
||||
size_t len = strlen(data);
|
||||
memcpy(ptr, data, len);
|
||||
upload_ctx->lines_read++;
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res = CURLE_OK;
|
||||
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_USERNAME, "user");
|
||||
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "smtp://smtp.gmail.com:465");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
|
||||
|
||||
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_UPLOAD, 1L);
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||
|
||||
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_easy_cleanup(curl);
|
||||
}
|
||||
|
||||
return (int)res;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue