equal
deleted
inserted
replaced
53 |
53 |
54 std::string format(const vmime::mediaType& contentType) { |
54 std::string format(const vmime::mediaType& contentType) { |
55 return contentType.getType() + "/" + contentType.getSubType(); |
55 return contentType.getType() + "/" + contentType.getSubType(); |
56 } |
56 } |
57 |
57 |
|
58 std::string toLowerCase(const std::string& value) { |
|
59 std::string result = value; |
|
60 std::transform(result.begin(), result.end(), result.begin(), ::tolower); |
|
61 return result; |
|
62 } |
|
63 |
58 std::string fetchBody(std::shared_ptr<vmime::body> body) { |
64 std::string fetchBody(std::shared_ptr<vmime::body> body) { |
59 std::stringstream result; |
65 std::stringstream result; |
60 vmime::utility::outputStreamAdapter resultAdapter(result); |
66 vmime::utility::outputStreamAdapter resultAdapter(result); |
61 |
67 |
62 const vmime::charset targetEncoding = vmime::charset("utf-8"); |
68 const vmime::charset targetEncoding = vmime::charset("utf-8"); |
119 |
125 |
120 xmlpp::Element* headers = root->add_child("headers"); |
126 xmlpp::Element* headers = root->add_child("headers"); |
121 |
127 |
122 for (std::shared_ptr<vmime::headerField> mimeField : m.getHeader()->getFieldList()) { |
128 for (std::shared_ptr<vmime::headerField> mimeField : m.getHeader()->getFieldList()) { |
123 // TODO: Are names always ASCII and subset of UTF-8? |
129 // TODO: Are names always ASCII and subset of UTF-8? |
124 // TODO: Convert header names to lower case? (they should be case insensitive) |
130 xmlpp::Element* field = headers->add_child(toLowerCase(nameCodec.encode(mimeField->getName()))); |
125 xmlpp::Element* field = headers->add_child(nameCodec.encode(mimeField->getName())); |
|
126 |
|
127 |
131 |
128 if (auto value = mimeField->getValue<vmime::text>()) { |
132 if (auto value = mimeField->getValue<vmime::text>()) { |
129 field->add_child_text(value->getConvertedText(ch)); |
133 field->add_child_text(value->getConvertedText(ch)); |
130 } else if (auto value = mimeField->getValue<vmime::mailbox>()) { |
134 } else if (auto value = mimeField->getValue<vmime::mailbox>()) { |
131 std::string name = value->getName().getConvertedText(ch); |
135 std::string name = value->getName().getConvertedText(ch); |