diff --git a/javascript/src/helpers/mailparser.js b/javascript/src/helpers/mailparser.js
index a6da68a5fb223932afe77acc67fc3d7149711e4e..2471b8ff447430fef4da096548d39065f7b82bdc 100644
--- a/javascript/src/helpers/mailparser.js
+++ b/javascript/src/helpers/mailparser.js
@@ -122,6 +122,27 @@ export function fixNewLines(mime) {
   return mime.replace(newline, "\r\n");
 }
 
+export function extractMessageID(mime) {
+  if (mime.startsWith("\r\n")) {
+    mime = mime.substring(2); //should not happen
+  }
+  const headersEndIndex = mime.indexOf("\r\n\r\n"); //the first empty line
+  if (headersEndIndex < 0) {
+    return null;
+  }
+  const mimeHeaders = mime.substring(0, headersEndIndex);
+  const headers = libmime.decodeHeaders(mimeHeaders);
+  let messageId = headers["Message-ID"];
+  if (Array.isArray(messageId) && messageId.length > 0) {
+    messageId = messageId[0];
+  }
+  if (messageId && typeof messageId === "string") {
+    messageId = messageId.replace(/^</, '').replace(/>$/, '');
+    return messageId;
+  }
+  return null;
+}
+
 export function parseMIME(mime) {
   let mimeStart = 0;
   let headersEnd = mime.indexOf("\r\n\r\n"); //the first empty line
diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index a4c1db1437a4a377e5d88e42c22a47b5b0ade618..370ce07850a582ae24d93a45c646a8e8a512fdb1 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -7,6 +7,7 @@ import {
   base64ToByteArray,
   byteArrayToBase64
 } from "../utilities/stringUtilities";
+import { extractMessageID } from "../helpers/mailparser";
 
 const QRCode = require("qrcode");
 const Penpal = require("penpal").default;
@@ -1740,6 +1741,11 @@ const connection = Penpal.connectToParent({
         "Currently authenticated identity"
       );
     },
+    extractMessageID(mime) {
+      return new Penpal.Promise(result => {
+        result(extractMessageID(mime));
+      });
+    },
     stringToUtf8ByteArray(str) {
       return new Penpal.Promise(result => {
         result(stringToUtf8ByteArray(str));