*/
#include "compose.hpp"
-#include "data.h"
#include "config.h"
#include "emailer.h"
#include "exceptions.h"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::min;
using std::list;
using std::cout;
using std::pair;
using boost::shared_ptr;
+using dcp::Data;
Emailer::Emailer (string from, list<string> to, string subject, string body)
: _from (from)
Emailer::get_data (void* ptr, size_t size, size_t nmemb)
{
size_t const t = min (_email.length() - _offset, size * nmemb);
- memcpy (ptr, _email.substr(_offset, size * nmemb).c_str(), size * nmemb);
+ memcpy (ptr, _email.substr (_offset, t).c_str(), t);
_offset += t;
return t;
}
void
-Emailer::send ()
+Emailer::send (string server, int port, string user, string password)
{
char date_buffer[32];
time_t now = time (0);
boost::posix_time::time_duration offset = local_now - utc_now;
sprintf (date_buffer + strlen(date_buffer), "%s%02d%02d", (offset.hours() >= 0 ? "+" : "-"), abs (offset.hours()), offset.minutes());
- stringstream email;
+ SafeStringStream email;
email << "Date: " << date_buffer << "\r\n"
<< "To: " << address_list (_to) << "\r\n"
throw NetworkError ("Could not initialise libcurl");
}
- curl_easy_setopt (curl, CURLOPT_URL, String::compose (
- "smtp://%1:%2",
- Config::instance()->mail_server().c_str(),
- Config::instance()->mail_port()
- ).c_str());
+ curl_easy_setopt (curl, CURLOPT_URL, String::compose ("smtp://%1:%2", server.c_str(), port).c_str());
- if (!Config::instance()->mail_user().empty ()) {
- curl_easy_setopt (curl, CURLOPT_USERNAME, Config::instance()->mail_user().c_str());
+ if (!user.empty ()) {
+ curl_easy_setopt (curl, CURLOPT_USERNAME, user.c_str ());
}
- if (!Config::instance()->mail_password().empty ()) {
- curl_easy_setopt (curl, CURLOPT_PASSWORD, Config::instance()->mail_password().c_str());
+ if (!password.empty ()) {
+ curl_easy_setopt (curl, CURLOPT_PASSWORD, password.c_str());
}
curl_easy_setopt (curl, CURLOPT_MAIL_FROM, _from.c_str());
CURLcode const r = curl_easy_perform (curl);
if (r != CURLE_OK) {
- throw KDMError (String::compose (_("Failed to send KDM email (%1)"), curl_easy_strerror (r)));
+ throw KDMError (String::compose (_("Failed to send email (%1)"), curl_easy_strerror (r)));
}
curl_slist_free_all (recipients);