*/
#include "compose.hpp"
-#include "data.h"
#include "config.h"
#include "emailer.h"
#include "exceptions.h"
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)
, _offset (0)
{
boost::algorithm::replace_all (_body, "\n", "\r\n");
+ boost::algorithm::replace_all (_body, "\0", " ");
}
void
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);
<< "From: " << _from << "\r\n";
if (!_cc.empty ()) {
- email << "Cc: " << address_list (_cc);
+ email << "Cc: " << address_list (_cc) << "\r\n";
}
if (!_bcc.empty ()) {
- email << "Bcc: " << address_list (_bcc);
+ email << "Bcc: " << address_list (_bcc) << "\r\n";
}
string const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
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);