#include "util.h"
#include "zipper.h"
#include <dcp/file.h>
+#include <dcp/filesystem.h>
#include "i18n.h"
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;
}
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;
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();
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);
}
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);
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);
}
}