Allow content parts to not be preset in XML.
[dcpomatic.git] / src / lib / send_problem_report_job.cc
index b81b0439b72aff167ebbac1d607af7ec4b41f1b2..89fe2a715843f63f35e0f6205f56a455b453c04c 100644 (file)
 #include "cross.h"
 #include "film.h"
 #include "log.h"
-#include "quickmail.h"
 #include "version.h"
+#include "emailer.h"
+#include "environment_info.h"
+#include <boost/foreach.hpp>
 
 #include "i18n.h"
 
@@ -32,6 +34,7 @@ using std::string;
 using std::list;
 using boost::shared_ptr;
 
+/** @param film Film thta the problem is with, or 0 */
 SendProblemReportJob::SendProblemReportJob (
        shared_ptr<const Film> film,
        string from,
@@ -47,6 +50,10 @@ SendProblemReportJob::SendProblemReportJob (
 string
 SendProblemReportJob::name () const
 {
+       if (!_film) {
+               return _("Email problem report");
+       }
+
        return String::compose (_("Email problem report for %1"), _film->name());
 }
 
@@ -62,36 +69,34 @@ SendProblemReportJob::run ()
        sub (_("Sending email"));
        set_progress_unknown ();
 
-       quickmail mail = quickmail_create (_from.c_str(), "DCP-o-matic problem report");
-
-       quickmail_add_to (mail, "carl@dcpomatic.com");
-
        string body = _summary + "\n\n";
 
        body += "Version: " + string (dcpomatic_version) + " " + string (dcpomatic_git_commit) + "\n\n";
 
-       body += "log head and tail:\n";
-       body += "---<8----\n";
-       body += _film->log()->head_and_tail (4096);
-       body += "---<8----\n\n";
-
-       add_file (body, "ffprobe.log");
-       add_file (body, "metadata.xml");
+       BOOST_FOREACH (string i, environment_info ()) {
+               body += i + "\n";
+       }
 
-       quickmail_set_body (mail, body.c_str());
+       body += "\n";
 
-       char const* error = quickmail_send (mail, "main.carlh.net", 2525, 0, 0);
+       if (_film) {
+               body += "log head and tail:\n";
+               body += "---<8----\n";
+               body += _film->log()->head_and_tail (4096);
+               body += "---<8----\n\n";
 
-       if (error) {
-               set_state (FINISHED_ERROR);
-               set_error (error, "");
-       } else {
-               set_state (FINISHED_OK);
+               add_file (body, "ffprobe.log");
+               add_file (body, "metadata.xml");
        }
 
-       quickmail_destroy (mail);
+       list<string> to;
+       to.push_back ("carl@dcpomatic.com");
+
+       Emailer emailer (_from, to, "DCP-o-matic problem report", body);
+       emailer.send ("main.carlh.net", 2525);
 
        set_progress (1);
+       set_state (FINISHED_OK);
 }
 
 void