Use rfc_2822_date for email headers to make them compliant (#2928).
authorCarl Hetherington <cth@carlh.net>
Tue, 7 Jan 2025 15:59:20 +0000 (16:59 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 9 Jan 2025 19:56:26 +0000 (20:56 +0100)
src/lib/email.cc

index 7a6e58d914e3a2e2d15f3128db400359f77298ac..028624c697f8d04f738bfc92fb5112fbab64d8ce 100644 (file)
 #include "config.h"
 #include "email.h"
 #include "exceptions.h"
+#include "util.h"
 #include "variant.h"
 #include <curl/curl.h>
 #include <boost/algorithm/string.hpp>
-#include <boost/date_time/c_local_time_adjustor.hpp>
 
 #include "i18n.h"
 
@@ -112,17 +112,7 @@ Email::get_data(void* ptr, size_t size, size_t nmemb)
 void
 Email::send(string server, int port, EmailProtocol protocol, string user, string password)
 {
-       char date_buffer[128];
-       time_t now = time (0);
-       strftime (date_buffer, sizeof(date_buffer), "%a, %d %b %Y %H:%M:%S ", localtime(&now));
-
-       auto const utc_now = boost::posix_time::second_clock::universal_time ();
-       auto const local_now = boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local (utc_now);
-       auto offset = local_now - utc_now;
-       auto end = date_buffer + strlen(date_buffer);
-       snprintf(end, sizeof(date_buffer) - (end - date_buffer), "%s%02d%02d", (offset.hours() >= 0 ? "+" : "-"), int(abs(offset.hours())), int(offset.minutes()));
-
-       _email = "Date: " + string(date_buffer) + "\r\n"
+       _email = "Date: " + rfc_2822_date(time(nullptr)) + "\r\n"
                "To: " + address_list (_to) + "\r\n"
                "From: " + _from + "\r\n";