diff options
author | Dmitry Isaikin <isaikin@corp.mail.ru> | 2016-02-03 11:48:30 +0300 |
---|---|---|
committer | Dmitry Isaikin <isaikin@corp.mail.ru> | 2016-02-09 13:21:03 +0300 |
commit | 908b7d4b8fdd7be43687450a36d56a6fb905ca25 (patch) | |
tree | 6be0ff44dc12147272145aae469aec13bf90d408 /src/core/rfc822 | |
parent | aa80a00642039403ad21462541765d520645471f (diff) |
Add method for building message rfc822 body directly to file.
Diffstat (limited to 'src/core/rfc822')
-rw-r--r-- | src/core/rfc822/MCMessageBuilder.cpp | 25 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageBuilder.h | 5 |
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(); |