#include <libpostproc/postprocess.h>
#include <libavutil/pixfmt.h>
}
+#include <curl/curl.h>
#include "util.h"
#include "exceptions.h"
#include "scaler.h"
return t;
}
+
+struct EmailState
+{
+ string message;
+ int done;
+};
+
+static size_t
+send_email_function (void* ptr, size_t size, size_t nmemb, void* userdata)
+{
+ EmailState* state = reinterpret_cast<EmailState*> (userdata);
+
+ int const now = min (size * nmemb, state->message.length() - state->done);
+
+ memcpy (ptr, state->message.c_str() + state->done, now);
+ state->done += now;
+
+ return now;
+}
+bool
+send_email (string from, string to, string message)
+{
+ CURL* curl = curl_easy_init ();
+ if (!curl) {
+ return true;
+ }
+
+ string const url = "smtp://" + Config::instance()->mail_server();
+
+ curl_easy_setopt (curl, CURLOPT_URL, url.c_str ());
+ curl_easy_setopt (curl, CURLOPT_MAIL_FROM, from.c_str ());
+ struct curl_slist* recipients = 0;
+ recipients = curl_slist_append (recipients, to.c_str ());
+ curl_easy_setopt (curl, CURLOPT_READFUNCTION, send_email_function);
+
+ EmailState state;
+ state.message = message;
+ state.done = 0;
+ curl_easy_setopt (curl, CURLOPT_READDATA, &state);
+
+ if (curl_easy_perform (curl) != CURLE_OK) {
+ return true;
+ }
+
+ curl_slist_free_all (recipients);
+ curl_easy_cleanup (curl);
+
+ return false;
+}