X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fkdm_with_metadata.cc;h=10054f01ed50c20b299fa29d833107dd3e7f9395;hb=a75cac36969942d1fcb43dadfdf60434c840af54;hp=bebb5df86d0b44f6af12a2c5f371d2e2620eed6e;hpb=f1b2884943ab6fd1e3ba37b017d41b65645f49dc;p=dcpomatic.git diff --git a/src/lib/kdm_with_metadata.cc b/src/lib/kdm_with_metadata.cc index bebb5df86..10054f01e 100644 --- a/src/lib/kdm_with_metadata.cc +++ b/src/lib/kdm_with_metadata.cc @@ -29,6 +29,7 @@ #include "util.h" #include "zipper.h" #include +#include #include "i18n.h" @@ -62,14 +63,14 @@ write_files ( return written; } - if (!boost::filesystem::exists (directory)) { - boost::filesystem::create_directories (directory); + if (!dcp::filesystem::exists(directory)) { + dcp::filesystem::create_directories(directory); } /* Write KDMs to the specified directory */ for (auto i: kdms) { - auto out = dcp::fix_long_path(directory / careful_string_filter(name_format.get(i->name_values(), ".xml"))); - if (!boost::filesystem::exists (out) || confirm_overwrite (out)) { + auto out = directory / careful_string_filter(name_format.get(i->name_values(), ".xml")); + if (!dcp::filesystem::exists(out) || confirm_overwrite(out)) { i->kdm_as_xml (out); ++written; } @@ -150,11 +151,11 @@ write_directories ( for (auto const& kdm: kdms) { auto path = directory; path /= container_name_format.get(kdm.front()->name_values(), "", "s"); - if (!boost::filesystem::exists (path) || confirm_overwrite (path)) { - boost::filesystem::create_directories (path); + if (!dcp::filesystem::exists(path) || confirm_overwrite(path)) { + dcp::filesystem::create_directories(path); write_files(kdm, path, filename_format, confirm_overwrite); + written += kdm.size(); } - written += kdm.size(); } return written; @@ -176,10 +177,10 @@ write_zip_files ( for (auto const& kdm: kdms) { auto path = directory; path /= container_name_format.get(kdm.front()->name_values(), ".zip", "s"); - if (!boost::filesystem::exists (path) || confirm_overwrite (path)) { - if (boost::filesystem::exists (path)) { + if (!dcp::filesystem::exists(path) || confirm_overwrite(path)) { + if (dcp::filesystem::exists(path)) { /* Creating a new zip file over an existing one is an error */ - boost::filesystem::remove (path); + dcp::filesystem::remove(path); } make_zip_file(kdm, path, filename_format); written += kdm.size(); @@ -209,23 +210,19 @@ send_emails ( auto config = Config::instance (); if (config->mail_server().empty()) { - throw NetworkError (_("No mail server configured in preferences")); + throw MissingConfigurationError(_("No outgoing mail server configured in the Email tab of preferences")); } if (config->kdm_from().empty()) { - throw NetworkError(_("No KDM from address configured in preferences")); + throw MissingConfigurationError(_("No from address configured in the KDM Email tab of preferences")); } for (auto const& kdms_for_cinema: kdms) { auto first = kdms_for_cinema.front(); - if (first->emails().empty()) { - continue; - } - auto zip_file = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path(); - boost::filesystem::create_directories (zip_file); + dcp::filesystem::create_directories(zip_file); zip_file /= container_name_format.get(first->name_values(), ".zip"); make_zip_file (kdms_for_cinema, zip_file, filename_format); @@ -250,7 +247,18 @@ send_emails ( } boost::algorithm::replace_all (body, "$SCREENS", screens.substr (0, screens.length() - 2)); - Emailer email (config->kdm_from(), first->emails(), subject, body); + auto emails = first->emails(); + std::copy(extra_addresses.begin(), extra_addresses.end(), std::back_inserter(emails)); + if (emails.empty()) { + continue; + } + + Emailer email (config->kdm_from(), { emails.front() }, subject, body); + + /* Use CC for the second and subsequent email addresses, so we seem less spammy (#2310) */ + for (auto cc = std::next(emails.begin()); cc != emails.end(); ++cc) { + email.add_cc(*cc); + } for (auto cc: config->kdm_cc()) { email.add_cc (cc); @@ -271,28 +279,13 @@ send_emails ( try { email.send (config->mail_server(), config->mail_port(), config->mail_protocol(), config->mail_user(), config->mail_password()); } catch (...) { - boost::filesystem::remove (zip_file); + dcp::filesystem::remove(zip_file); log_details (email); throw; } log_details (email); - for (auto extra: extra_addresses) { - Emailer email (config->kdm_from(), { extra }, subject, body); - email.add_attachment (zip_file, container_name_format.get(first->name_values(), ".zip"), "application/zip"); - - try { - email.send (config->mail_server(), config->mail_port(), config->mail_protocol(), config->mail_user(), config->mail_password()); - } catch (...) { - boost::filesystem::remove (zip_file); - log_details (email); - throw; - } - - log_details (email); - } - - boost::filesystem::remove (zip_file); + dcp::filesystem::remove(zip_file); } }