aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/rfc822
diff options
context:
space:
mode:
authorGravatar Dmitry Isaikin <isaikin@corp.mail.ru>2016-02-03 11:48:30 +0300
committerGravatar Dmitry Isaikin <isaikin@corp.mail.ru>2016-02-09 13:21:03 +0300
commit908b7d4b8fdd7be43687450a36d56a6fb905ca25 (patch)
tree6be0ff44dc12147272145aae469aec13bf90d408 /src/core/rfc822
parentaa80a00642039403ad21462541765d520645471f (diff)
Add method for building message rfc822 body directly to file.
Diffstat (limited to 'src/core/rfc822')
-rw-r--r--src/core/rfc822/MCMessageBuilder.cpp25
-rw-r--r--src/core/rfc822/MCMessageBuilder.h5
2 files changed, 29 insertions, 1 deletions
diff --git a/src/core/rfc822/MCMessageBuilder.cpp b/src/core/rfc822/MCMessageBuilder.cpp
index a98cefd1..b3a95249 100644
--- a/src/core/rfc822/MCMessageBuilder.cpp
+++ b/src/core/rfc822/MCMessageBuilder.cpp
@@ -810,6 +810,31 @@ Data * MessageBuilder::dataForEncryption()
return dataAndFilterBccAndForEncryption(false, true);
}
+ErrorCode MessageBuilder::writeToFile(String * filename)
+{
+ FILE * f = fopen(filename->fileSystemRepresentation(), "wb");
+ if (f == NULL) {
+ return ErrorFile;
+ }
+
+ ErrorCode error = ErrorNone;
+ struct mailmime * mime = mimeAndFilterBccAndForEncryption(false, false);
+
+ int col = 0;
+ int r = mailmime_write_file(f, &col, mime);
+ if (r != MAILIMF_NO_ERROR) {
+ error = ErrorFile;
+ }
+
+ mailmime_free(mime);
+
+ if (fclose(f) != 0) {
+ error = ErrorFile;
+ }
+
+ return error;
+}
+
String * MessageBuilder::htmlRendering(HTMLRendererTemplateCallback * htmlCallback)
{
MessageParser * message = MessageParser::messageParserWithData(data());
diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h
index f03bd09a..3d26ac59 100644
--- a/src/core/rfc822/MCMessageBuilder.h
+++ b/src/core/rfc822/MCMessageBuilder.h
@@ -40,7 +40,10 @@ namespace mailcore {
virtual Data * data();
virtual Data * dataForEncryption();
-
+
+ // Store builded message to file.
+ virtual ErrorCode writeToFile(String * filename);
+
virtual String * htmlRendering(HTMLRendererTemplateCallback * htmlCallback = NULL);
virtual String * htmlBodyRendering();