#include "UrlFactory.h" #include "../Interface/Server.h" #include #include #include "../stringtools.h" struct RDUserS { RDUserS(void) : pos(0) {} size_t pos; std::string text; }; static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) { struct RDUserS *pooh = (struct RDUserS*)userp; const char *data; if(size*nmemb < 1) return 0; if(pooh->postext.size()) { data = &pooh->text[pooh->pos]; size_t len = (std::min)(pooh->text.size()-pooh->pos, size*nmemb); memcpy(ptr, data, len); pooh->pos+=len; return len; } return 0; } std::string format_time(std::string fs) { time_t rawtime; char buffer [100]; time ( &rawtime ); #ifdef _WIN32 struct tm timeinfo; localtime_s(&timeinfo, &rawtime); strftime (buffer,100,fs.c_str(),&timeinfo); #else struct tm *timeinfo; timeinfo = localtime ( &rawtime ); strftime (buffer,100,fs.c_str(),timeinfo); #endif std::string r(buffer); return r; } bool UrlFactory::sendMail(const MailServer &server, const std::vector &to, const std::string &subject, const std::string &message, std::string *errmsg) { CURL *curl=curl_easy_init(); std::string mailfrom=server.mailfrom; if(mailfrom.find("<")==std::string::npos) { mailfrom="<"+mailfrom+">"; } curl_easy_setopt(curl, CURLOPT_URL, ("smtp://"+server.servername+":"+nconvert(server.port)).c_str()); curl_easy_setopt(curl, CURLOPT_USE_SSL, server.ssl_only?CURLUSESSL_ALL:CURLUSESSL_TRY); if(!server.check_certificate) { curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); } if(!server.username.empty()) { curl_easy_setopt(curl, CURLOPT_USERNAME, server.username.c_str()); curl_easy_setopt(curl, CURLOPT_PASSWORD, server.password.c_str()); } curl_easy_setopt(curl, CURLOPT_MAIL_FROM, mailfrom.c_str()); //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_slist * recpt=NULL; for(size_t i=0;iLog(std::string("Error during cURL operation occured: ")+curl_easy_strerror(res)+" ("+nconvert(res)+") -- "+errbuf, LL_DEBUG); } else { *errmsg="ec="+nconvert(res)+" -- "+errbuf; } curl_slist_free_all(recpt); curl_easy_cleanup(curl); return false; } curl_slist_free_all(recpt); curl_easy_cleanup(curl); return true; }