summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-03-07 16:40:03 +0100
committerCarl Hetherington <cth@carlh.net>2024-03-07 16:40:03 +0100
commit0a93c0df8fd6a40b627cc53d51a249628db6b795 (patch)
treed8aa0df9e1e4cf69014b659aae5dbcc472e75911
parentf610a8708f11d6052a995f31cd506bc93faafa1c (diff)
Store attachment contents in the Email object.
-rw-r--r--src/lib/email.cc5
-rw-r--r--src/lib/email.h3
-rw-r--r--src/lib/kdm_with_metadata.cc4
3 files changed, 5 insertions, 7 deletions
diff --git a/src/lib/email.cc b/src/lib/email.cc
index 5017f4d28..8557b40e0 100644
--- a/src/lib/email.cc
+++ b/src/lib/email.cc
@@ -77,7 +77,7 @@ void
Email::add_attachment(boost::filesystem::path file, string name, string mime_type)
{
Attachment a;
- a.file = file;
+ a.file = dcp::ArrayData(file);
a.name = name;
a.mime_type = mime_type;
_attachments.push_back (a);
@@ -171,8 +171,7 @@ Email::send(string server, int port, EmailProtocol protocol, string user, string
}
bio = BIO_push (b64, bio);
- ArrayData data (i.file);
- BIO_write (bio, data.data(), data.size());
+ BIO_write(bio, i.file.data(), i.file.size());
(void) BIO_flush (bio);
char* out;
diff --git a/src/lib/email.h b/src/lib/email.h
index 3bcb8af4a..36398bfd8 100644
--- a/src/lib/email.h
+++ b/src/lib/email.h
@@ -30,6 +30,7 @@ public:
void add_cc (std::string cc);
void add_bcc (std::string bcc);
+ /** Add attachment, copying the contents of the file into memory */
void add_attachment (boost::filesystem::path file, std::string name, std::string mime_type);
void send (std::string server, int port, EmailProtocol protocol, std::string user = "", std::string password = "");
@@ -61,7 +62,7 @@ private:
std::vector<std::string> _bcc;
struct Attachment {
- boost::filesystem::path file;
+ dcp::ArrayData file;
std::string name;
std::string mime_type;
};
diff --git a/src/lib/kdm_with_metadata.cc b/src/lib/kdm_with_metadata.cc
index e7d9aa31c..971eeac76 100644
--- a/src/lib/kdm_with_metadata.cc
+++ b/src/lib/kdm_with_metadata.cc
@@ -268,6 +268,7 @@ send_emails (
}
email.add_attachment (zip_file, container_name_format.get(first->name_values(), ".zip"), "application/zip");
+ dcp::filesystem::remove(zip_file);
auto log_details = [](Email& email) {
dcpomatic_log->log("Email content follows", LogEntry::TYPE_DEBUG_EMAIL);
@@ -279,13 +280,10 @@ send_emails (
try {
email.send (config->mail_server(), config->mail_port(), config->mail_protocol(), config->mail_user(), config->mail_password());
} catch (...) {
- dcp::filesystem::remove(zip_file);
log_details (email);
throw;
}
log_details (email);
-
- dcp::filesystem::remove(zip_file);
}
}