aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vmime/net/imap/IMAPMessagePart.cpp10
-rw-r--r--src/vmime/net/imap/IMAPMessagePart.hpp2
-rw-r--r--src/vmime/net/message.cpp5
-rw-r--r--src/vmime/net/message.hpp10
4 files changed, 27 insertions, 0 deletions
diff --git a/src/vmime/net/imap/IMAPMessagePart.cpp b/src/vmime/net/imap/IMAPMessagePart.cpp
index 08e6f92b..6f3e7167 100644
--- a/src/vmime/net/imap/IMAPMessagePart.cpp
+++ b/src/vmime/net/imap/IMAPMessagePart.cpp
@@ -68,6 +68,11 @@ IMAPMessagePart::IMAPMessagePart(const shared_ptr <IMAPMessagePart>& parent, con
part->body_type_basic()->media_basic()->media_subtype()->value());
m_size = part->body_type_basic()->body_fields()->body_fld_octets()->value();
+
+ if (const auto pparam = part->body_type_basic()->body_fields()->body_fld_param())
+ for (const auto& param : pparam->items())
+ if (param->string1()->value() == "NAME")
+ m_name = param->string2()->value();
}
m_structure = null;
@@ -115,6 +120,11 @@ size_t IMAPMessagePart::getNumber() const
return m_number;
}
+string IMAPMessagePart::getName() const
+{
+ return m_name;
+}
+
shared_ptr <const header> IMAPMessagePart::getHeader() const
{
diff --git a/src/vmime/net/imap/IMAPMessagePart.hpp b/src/vmime/net/imap/IMAPMessagePart.hpp
index ab0d1a6f..d095c12f 100644
--- a/src/vmime/net/imap/IMAPMessagePart.hpp
+++ b/src/vmime/net/imap/IMAPMessagePart.hpp
@@ -59,6 +59,7 @@ public:
const mediaType& getType() const;
size_t getSize() const;
size_t getNumber() const;
+ string getName() const;
shared_ptr <const header> getHeader() const;
@@ -77,6 +78,7 @@ private:
size_t m_number;
size_t m_size;
+ string m_name;
mediaType m_mediaType;
};
diff --git a/src/vmime/net/message.cpp b/src/vmime/net/message.cpp
index 6765e73c..1a0c8c2c 100644
--- a/src/vmime/net/message.cpp
+++ b/src/vmime/net/message.cpp
@@ -36,6 +36,11 @@ namespace vmime {
namespace net {
+string messagePart::getName() const
+{
+ return {};
+}
+
shared_ptr <const messagePart> messagePart::getPartAt(const size_t pos) const
{
return getStructure()->getPartAt(pos);
diff --git a/src/vmime/net/message.hpp b/src/vmime/net/message.hpp
index 80c9b974..68cce415 100644
--- a/src/vmime/net/message.hpp
+++ b/src/vmime/net/message.hpp
@@ -99,6 +99,16 @@ public:
*/
virtual size_t getNumber() const = 0;
+ /** Return the name of this part. In particular, this corresponds to
+ * the attachment file name for attachment parts.
+ *
+ * The part name may be empty if the part does not advertise it or
+ * if the underlying protocol does not support it.
+ *
+ * @return part name
+ */
+ virtual string getName() const;
+
/** Return the sub-part at the specified position (zero is the
* first part).
*