nodemailer / mailparser

Decode mime formatted e-mails
Other
1.58k stars 281 forks source link

Outlook .msg attachment corrupted after passing by mailparser #141

Closed melimanrique closed 8 years ago

melimanrique commented 8 years ago

I'm parsing an email with mailparser and resending the email with nodemailer. Like this:

var mailparser = new MailParser();
mailparser.on("end", function(mail_object){
  var mailOptions = { headers: mail_object.headers, html: mail_object.html, attachments : mail_object.attachments };
  var nodemailerTransport = get_transporter(); //Function that gives the transporter object
  nodemailerTransport.sendMail(mailOptions, function(error, info){
    nodemailerTransport.close();
  });
}

When the email contains an Outlook Email (.msg) as attachment, this attachment is corrupted. Doesn't seem correctly parsed because there's no content on it.

Is there a way to just forward the attachment without damaging it?

andris9 commented 8 years ago

Nodemailer and mailparser options do not match one-on-one so you should check first what are you actually passing as the attachment. You should also check how the msg attachment is included in the parsed message - is it a "normal" attachment, eg. inside multipart/mixed container or a forwarded embedded message eg. message/rfc822 container because these need special treatment. You could also compre the input and output and see the differences of these two messages which ahould give a hint of what might be wrong

melimanrique commented 8 years ago

I'm processing the attachments like this: (didn't gave this info before as I though wasn't relevant)

var attachment_array = [];
attachments.map(function(attachment){
  var new_attachment = {
    filename: attachment.fileName,
    content: attachment.content,
    contentType: attachment.contentType,
    contentDisposition: attachment.contentDisposition,
    encoding: attachment.transferEncoding,
    cid: attachment.contentId
  };
  attachment_array.push(new_attachment);
 }
});

It is included inside a message/rfc822 container as an embedded message. This is what the mail_object.attachments looks like when printing in console:

  { contentType: 'message/rfc822',
    contentDisposition: 'attachment',
    generatedFileName: 'attachment.eml',
    contentId: 'c3641c93181a2e01761b628aa86d60ae@mailparser',
    checksum: '...',
    length: ..,
    content: <Buffer  ... > }

How should it be treated then?

melimanrique commented 8 years ago

@andris9 do you know how should I treat the attachment?

andris9 commented 8 years ago

Just to clarify – is there a problem with parsing (eg. the content option is empty) or is the problem with sending (the receiver does not see the attached message)? It would help a lot to see the source of the sent message to see if and how the attachment was added.

If the problem is in sending, not parsing then you could try to upgrade Nodemailer to the beta version (run npm install nodemailer@beta or set the nodemailer version as "beta" in the package.json dependencies) and see if it helps anything

ricardopolo commented 8 years ago

@andris9, I am working with @melimanrique in this issue. After multiple tests I can confirm is an issue in MailParser and not in not NodeMailer or other components. I change our mail server from Haraka to https://github.com/andris9/smtp-server to be sure it is not related. I also tried upgrading to the beta versions and the issue persists.

So this is what I see:

When we a message as attachment from from Outlook it looks like a regular attachment image

But when we pass it to MailParser, we see the attachment like this

     { contentType: 'message/rfc822',
       contentDisposition: 'attachment',
       generatedFileName: 'attachment.eml',
       contentId: 'c3641c93181a2e01761b628aa86d60ae@mailparser',
       checksum: 'dc8f3704841b339c5f1ef564032d3cf6',
       length: 71878,
       content: <Buffer 52 65 63 65 69 76 65 64 3a 20 66 72 6f 6d 20 42 4c 32 50 52 30 35 4d 42 31 31 36 2e 6e 61 6d 70 72 64 30 35 2e 70 72 6f 64 2e 6f 75 74 6c 6f 6f 6b 2e ... > }

As you can see it does not contain a fileName as a regular attachment, it contains a generatedFileName.

What I can guess is that outlook does not attach it as a typical attachment, but creates another Mime tree that confuses MailParser.

This is the stream that generates this issue: https://gist.github.com/ricardopolo/8d44147861c42c2bacef

Any advice please?

andris9 commented 8 years ago

Could you provide an example message source that fails proper parsing so I could test it and see what is going on?

ricardopolo commented 8 years ago

Yes of course, I already attached it in my last message https://gist.github.com/ricardopolo/8d44147861c42c2bacef

Please tell me if you need any more information @andris9

andris9 commented 8 years ago

Ok, sorry, didn't notice it at first. I'll look into it today

andris9 commented 8 years ago

I checked and the problem is not in the parsing but in the sending side. Firstly you would have to use the beta version of nodemailer or wait until the end of this week when the beta is released as latest. Secondly, you need to remove duplicate content-type header before sending the mail.

This is the code that I used:

mailparser.on('end', function (mail_object) {

    // Remove, otherwise the message ends up with 2 content-type headers that messes the output
    delete mail_object.headers['content-type'];

    var mailOptions = {
        headers: mail_object.headers,
        html: mail_object.html,
        attachments: mail_object.attachments
    };
   ...
ricardopolo commented 8 years ago

Great @andris9. You do a great job in your projects! Thanks :smile:

erSitzt commented 2 years ago

@andris9 @melimanrique @ricardopolo

Hi there, i know this is an old issue, but i ran into a similar or the same problem. with mailparser and forwarding the mail afterwards.

We parse mail from Redmine to remove redmine-specific headers when the recipient is a Redmine mailbox or another issue tracker...

This works fine most of the time, even with attachments, with almost the same code as the example above. The problem occurs when the orignal mail is forwarded as an attachment.

Fun discovery on our side, sending the mail to GMail works and is in this case 80kb

image
message source gmail (click to expand) ``` Delivered-To: someemail@gmail.com Received: by 2002:a05:7010:ee4c:b0:2e8:8465:63b2 with SMTP id pd12csp805863mdb; Fri, 2 Sep 2022 00:31:54 -0700 (PDT) X-Google-Smtp-Source: AA6agR5rOQUn98m8tb4pCGLJMJNpAuahUXIx7M4pQvVp9x7FaCNEMhyRlvhAqdAH9guBuKhpkQkY X-Received: by 2002:adf:e642:0:b0:225:493f:145 with SMTP id b2-20020adfe642000000b00225493f0145mr16445265wrn.440.1662103913897; Fri, 02 Sep 2022 00:31:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662103913; cv=none; d=google.com; s=arc-20160816; b=l1Q9N0uPyAWrFVcDeCMmHbvUPITOhQCYlog4huijITjfFsmcmM8yGXnZDLMPpl3ZWF WUda2fRvOkUUPqv+JleATT6U4I/bHOAj3Pi2ovTNtcdi3rPlhDjtwlKmYGIe/K6zgPy3 mbxdx6ZFMIBpmQl8DUP5vE0zyMURdTkfBX4ZP0UfeTQunQ/bYj0WXI466dkcs7lbIoTj nAEPerNt8xOBX45bGISE7TyNnCEmBNk7NKb2Hc9LODGyotl+SPW8w/hC4NxF9C6ps7KR +cGrM76o5B2pqfq84uj6N3IU3sWyKVTaz5VWpUOXRU99GGLAuiqBmMrgtY/X7JegZ+N9 JSVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:date:message-id:subject:cc:to:from; bh=Aa0yE367A5b2XEUnrR+C0PwPSyqN0HsvEEozcX/Jfqc=; b=Y/7Pymf7oK5zgU81/MRLzKJRodQF8f8GxIms+MNNAUtYhiv6C0KOuSnbKJIa7Zm2EB TEYb86DlA5KfOLpmQT5J3q+vI2TxuONMM2KpPW0E7WVy0eRQIlUeX/bC6pWsv3gZneew HdtDXP0vB9V5G8fL391wQsGJR19KlBtyl9U0bZm3L6DM8yINl8RAXObOSv3SljTYdxzq 2gav3vGsxfIdFAb/9x5o1EEF11nHc72B/gT5NEWpRaWazw0IVjiAVL/Cu+UV+6XQZNu+ gvOlQguaQdyUMk7nJgiXHkTc77/Jg9xtgpQ9Ees4SgthtwsQ0BQBEiUfrlczeN44SnU4 8nbw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of Maxtestet@myobfuscateddomain.com designates 84.17.184.251 as permitted sender) smtp.mailfrom=Maxtestet@myobfuscateddomain.com Return-Path: Received: from com11.servicemail24.de (com11.servicemail24.de. [84.17.184.251]) by mx.google.com with ESMTPS id f8-20020a0560001a8800b00226ef881deasi613944wry.27.2022.09.02.00.31.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Sep 2022 00:31:53 -0700 (PDT) Received-SPF: pass (google.com: domain of Maxtestet@myobfuscateddomain.com designates 84.17.184.251 as permitted sender) client-ip=84.17.184.251; Authentication-Results: mx.google.com; spf=pass (google.com: domain of Maxtestet@myobfuscateddomain.com designates 84.17.184.251 as permitted sender) smtp.mailfrom=Maxtestet@myobfuscateddomain.com Received: from [127.0.0.1] (83.135.24.129) by com11.servicemail24.de id h26omi2sqqsb for ; Fri, 2 Sep 2022 09:31:53 +0200 (envelope-from ) Content-Type: multipart/alternative; boundary="--_NmP-17ae68c3fd443c7b-Part_1" From: Maxtestet@myobfuscateddomain.com To: someemail@gmail.com Cc: d.buehring@myobfuscateddomain.com Bcc: d.buehring@myobfuscateddomain.com Subject: Re: Test : Mail mit Text und Bild [Aufgabe #384719] Message-ID: Date: Fri, 02 Sep 2022 07:31:52 +0000 MIME-Version: 1.0 ----_NmP-17ae68c3fd443c7b-Part_1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit test ----_NmP-17ae68c3fd443c7b-Part_1 Content-Type: multipart/related; type="text/html"; boundary="--_NmP-17ae68c3fd443c7b-Part_3" ----_NmP-17ae68c3fd443c7b-Part_3 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit

test

----_NmP-17ae68c3fd443c7b-Part_3 Content-Type: message/rfc822; name=message.eml Content-ID: <6311b1673b880_58da25e4048764@redmine-live-7f7cc5b489-gbl2c.mail> Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=message.eml Received: from DB9P189MB1857.EURP189.PROD.OUTLOOK.COM (2603:10a6:10:326::7) by VI1P18901MB0830.EURP189.PROD.OUTLOOK.COM with HTTPS; Fri, 2 Sep 2022 07:24:45 +0000 Received: from OL1P279CA0062.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:15::13) by DB9P189MB1857.EURP189.PROD.OUTLOOK.COM (2603:10a6:10:326::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.21; Fri, 2 Sep 2022 07:24:44 +0000 Received: from HE1EUR04FT021.eop-eur04.prod.protection.outlook.com (2603:10a6:e10:15:cafe::c9) by OL1P279CA0062.outlook.office365.com (2603:10a6:e10:15::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.12 via Frontend Transport; Fri, 2 Sep 2022 07:24:44 +0000 Authentication-Results: spf=pass (sender IP is 209.85.128.169) smtp.mailfrom=gmail.com; dkim=pass (signature was verified) header.d=gmail.com;dmarc=pass action=none header.from=gmail.com;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of gmail.com designates 209.85.128.169 as permitted sender) receiver=protection.outlook.com; client-ip=209.85.128.169; helo=mail-yw1-f169.google.com; pr=C Received: from mail-yw1-f169.google.com (209.85.128.169) by HE1EUR04FT021.mail.protection.outlook.com (10.152.26.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10 via Frontend Transport; Fri, 2 Sep 2022 07:24:43 +0000 Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-334dc616f86so8509337b3.8 for ; Fri, 02 Sep 2022 00:24:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date; bh=2V7qwFhBMhuCGJUWDyHpM2iMa4AndG8JXktwvLpaBP8=; b=iqFGFgCW6RZNNFNs35BRdrukJxch7UW+TsSrPLzVQcsVi4rs3FLep2ldSRvAeZ6jfT SOIP7iQy45rkSkUuMnb2JcC5p1feTqJ0dxPZx9QlqgWUfFLGyarDwZETZYrttEBoiwKM 2J5RwwkoN8i/Az4ggBoUV5ulX3TFTMudAWB6iORFLpxDNFhh7GC1DYaZHxXQZTbwul2F Sbs8V/DhZYNtOFceypimJyV5xR4ESsxYLQawK4I80ozwFiJspAUF49ba9EqFAv0OnLX8 AgAx9YjK4b3WDmwhk0PDS6MkmO8yY9amFS2+2KZ4XY5XWrNi9PjM6a03DcB9EN0idABc Gv5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date; bh=2V7qwFhBMhuCGJUWDyHpM2iMa4AndG8JXktwvLpaBP8=; b=ABlFjuQu5JqX/FzncJLUkn/eX4qzFN+v5gx6j6nEYBJgu04iSot9V1+KVvalZDotVt IbFiligzRM8IVepu81U8yIgI9vHH+r6SmMO3HUOOJF1iDUx1i77x8yhnM1FFRvsgXXWO uNcmsfitHqweAvXUwnQEBbiOfdDlWARCn5UktB0FJhJRSZrtRQIowsdipHmmp1+guQPw gBJ2Dr1MgtQZYxC6YhnZ8GOWiR9urgxOP3VQvJl6S7vI5b5IIP84x5Zwx+/XQde1mZM7 z7p0ET7+za7MXNzvEveq/GjDoTaAPAfuHizq4SVo/dnmOhFjL8uR3ERQE85AKVkRQjWs Bwyw== X-Gm-Message-State: ACgBeo0QAe9B3IrknYknxzFepLkcHu03MPXp32nWMsgAt+vPnPjXlprd WWabz+rFaBIBM0Eqk9m/V4p2pH9QKCc9AgOvVE5ZMPOy/dY= X-Google-Smtp-Source: AA6agR6WE4/upnK9r3upVBhlVJZmJ41DZYamYEgIii3qiW5g/btwhr2CIpunICe1T+ky83oYuBWFc87nVjx6Vml9sso= X-Received: by 2002:a81:3844:0:b0:344:bbce:3e23 with SMTP id f65-20020a813844000000b00344bbce3e23mr3824693ywa.8.1662103481287; Fri, 02 Sep 2022 00:24:41 -0700 (PDT) From: "Max Power" Date: Fri, 2 Sep 2022 09:24:30 +0200 Message-ID: Subject: Test : Mail mit Text und Bild To: helpdesk@myobfuscateddomain.com Content-Type: multipart/mixed; boundary="00000000000095562705e7ac9f58" Return-Path: someemail@gmail.com X-MS-Exchange-Organization-ExpirationStartTime: 02 Sep 2022 07:24:43.5621 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: 66cae568-65bf-4ba2-b73c-08da8cb434e2 X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 094a7fc1-25dc-4512-b446-33d24bd0d434:0 X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: HE1EUR04FT021.eop-eur04.prod.protection.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id: 66cae568-65bf-4ba2-b73c-08da8cb434e2 X-MS-TrafficTypeDiagnostic: DB9P189MB1857:EE_ X-MS-Exchange-AtpMessageProperties: SA|SL X-MS-Exchange-Organization-SCL: 1 X-Microsoft-Antispam: BCL:0; X-Forefront-Antispam-Report: CIP:209.85.128.169;CTRY:US;LANG:de;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-yw1-f169.google.com;PTR:mail-yw1-f169.google.com;CAT:NONE;SFS:(13230016)(4636009)(84050400002)(86362001)(4006050)(82202003)(42186006)(336012)(73392003)(26005)(33964004)(6666004)(564344004)(55446002)(356005)(5660300002)(7636003)(1096003)(8676002)(34206002)(7596003)(76482006)(75640400001)(563144003);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2022 07:24:43.5621 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66cae568-65bf-4ba2-b73c-08da8cb434e2 X-MS-Exchange-CrossTenant-Id: 094a7fc1-25dc-4512-b446-33d24bd0d434 X-MS-Exchange-CrossTenant-AuthSource: HE1EUR04FT021.eop-eur04.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9P189MB1857 X-MS-Exchange-Transport-EndToEndLatency: 00:00:02.2578592 X-MS-Exchange-Processed-By-BccFoldering: 15.20.5588.015 X-Microsoft-Antispam-Mailbox-Delivery: ucf:1;jmr:0;auth:0;dest:C;OFR:CustomRules;ENG:(910001)(944506478)(944626604)(920097)(930097); X-Microsoft-Antispam-Message-Info: VAhf4f/JVqNgzV0IvNvBnx653fkwwLeAM522r1pnF/yfP1Yh/BH9tkPXvZJ3tHyge7+0kKz2wJaOZaXNsSMWwPRdt6bnAMN1daA581dMKrMbsObVqSX7g0Sn+p1IZnAd4NDKiAkPOSgPV2osJj+ReVByJsObFYg2zLhtzw64cnOiEG3hQsqJPY64iPXT4iu08XOksteQQYyHXwRVn325l5WdSDbUdx98V9bVDNBjcmlP31umkLoNxU5V7iDWpXgu5ONCzGHyuAM3iCmK2chn6LJJ7m5oECoMVO4Z5LbQI8cSmmKceAyBS0GJbm24K8UyBJwLxBhPg0SwpeIzD7ynQHBmYcGDo8RXDM2NuE5kdIHuh37a7w6Fnt1lVVBMApn/nvW75yLXYC+R4INUwBdavTLIPMbaqNva7PJCr775szfabAo88B4eg/3NXN1iM4v7lPNsdfe0CWi4rw2myVKtidagOEgNWGwXfmh8KfEpcGAOs4embYVyIU+gfqveWbuJ3pZf5U32TdclMjTC6F5srdkLjwdHVirry9Fh7VmCLXEoBx3SmJ+UqjXOhrFuWb1QBNo62rX2RsqKHud8PYP3/tOTE2dAaWKp0MR9xFr24NrqhhKptUXrHnLsmH8wfGiuV6k41p/9hw0vI8C2irDCUoAL1C03TGPQrwinsP7Wzoe4LPKeeJe0nR9n6g1N2gZ1yGThhga2wvBUgcX0dz2eT+XY/0bTeFGp+DG7kEJii+MiLj9GIDU79XwyjfqbzcwVpAGP6nygV0i+zDO7PNRl9xNo6HD3WmkZo/WfbXyKihSoxzTHhN0KT9trgs7Hx1h0T1TFaq+R6i4VXiS/A1/CV0/j+eiGnga/XyFjcK7sROF7kWHkm3BtkFVyL9wNdgOeVO0yhExkGJL6272zNm2i0t+Ffq0jEn9m98CVq9ldvYthuxgkb137hKf6O4IWnofnBYy22crOj2DYeBj5Hcg2XQSLkFyQsQD1a6P2fLQndkVT3f8EVIkqeFhOUcGdycv9dojKoMqspBFv88hm0gOpdGo6xm/I3JzuBWgQx+315Wc5oqS2SD3Lox8WT5GFtCQt1y97WnYnX3VXVsCSZvpU8UEiw/zIMW1UC6d4tZmC4RuULGR6wQP+UEAVxCcHUH8/58LWuxeYgbZtWfDf7B/wpH3w3t/etdUdEONVX78LyPzHBvY6skHVl4GxWZnyhX5HhKwVlFMcDYbO/MDiTn6bSqSg/EEl8Q7CQcLbFddAOSiziaNzYwyHI2O5p2N3hWlBTwAYfNoABd0mTjLVDqp+9Ob1t7Ja6o4g8+rL3PM2o0sOTbtp8Iymp6iZ7GrzbLf2SnDD0dkZeUs+qSLFG8YF7GuzFpfIApRfj1MvSXngV9cUSR+VQ6bOUQPeKajeDct0klCmVos8rdQNRsUz98DvCUff2vuR940unr6itskm0JRXnVoX+dGw6Jg0idbB6Dxl36xi4sclgTirDOH1DsGf9LUFqoUkWPlmGV4V6K9X8a0ZZ9mnKdaKgFCePpzdf1WtybbN+7Hgts5APZfQ6mXLm3IyXFSbz/5Mw2jWqHBp/ITn4m49W4FXmMrhR0q5q9j4ZBGIrv/GEAhzFOyXFnBLNPssV0uXI16EuYl4Y0r5yJMC9HZxW/3N+MNk8hsK7JvO9T51vptq1olZiWlAim1PvdsUu9+NNh9unUFsptJc3DSdsL8hS7N2Jik9Ky1Snk2rw7UVAc4zuRkDX7mvEJX/Dyu4LA9ElsswRxWQFNKheDbV6Y1Zr4NwBG8t7vPfAOVNG8Xtvd0fve0nEiXUROAEFVxien5yIJa3qEv9C5Yp0OerXOam0vUskGsUwSJIvghQ8s88a4KW0Ra2uFVxgARWMRd/NyQoI9DqwBFmm4Y5Ir/8AAsT9gUOZrDIkgS5vRvb MIME-Version: 1.0 --00000000000095562705e7ac9f58 Content-Type: multipart/alternative; boundary="00000000000095562505e7ac9f56" --00000000000095562505e7ac9f56 Content-Type: text/plain; charset="UTF-8" Mail mit Text und Bild --00000000000095562505e7ac9f56 Content-Type: text/html; charset="UTF-8"
Mail mit Text und Bild
--00000000000095562505e7ac9f56-- --00000000000095562705e7ac9f58 Content-Type: image/jpeg; name="237-600x600.jpg" Content-Disposition: attachment; filename="237-600x600.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l7k5h29h0 --00000000000095562705e7ac9f58-- ----_NmP-17ae68c3fd443c7b-Part_3-- ----_NmP-17ae68c3fd443c7b-Part_1-- ```

And it looks like this when its forwarded to a Microsoft O365 Mailbox.. with only 47kb

image

This is my code snipped (all unnecessary stuff removed )

const server = new SMTPServer({
    secure: false,
    authOptional: true,
    maxAllowedUnauthenticatedCommands: Infinity,
    onRcptTo(address, session, callback) {
      return callback(); 
    },
    onData(stream, session, callback) {
        parse(stream, session);
    }
  });

server.listen(port);

async function parse(stream, session){

  let isredmineprj = await checkRcpt(session.envelope, redmine_mails);
  let myparsed = await simpleParser(stream);

    if (isredmineprj) {
      myparsed.headers.delete('x-redmine-ticket-id');
      myparsed.headers.set('subject', myparsed.subject.replace(/(.*)(\[.*#[0-9]+\])/i, '$1'));
      myparsed.subject = myparsed.subject.replace(/(.*)(\[.*#[0-9]+\])/i, '$1');
    }
    const fromAddress = myparsed.from.value[0].address;
    var mailOptions = {
      from:  myparsed.from ? myparsed.from.value.map(from => from.address) : undefined,
      to: myparsed.to ? myparsed.to.value.map(to => to.address).filter(e => e !== fromAddress).join(', ') : undefined,
      cc: myparsed.cc ? myparsed.cc.value.map(cc => cc.address).filter(e => e !== fromAddress).join(', ') : undefined,
      bcc: bccmap[session.id] ? bccmap[session.id].filter(e => e !== fromAddress).join(', ') : undefined,  // bcc fehlt ??
      subject: myparsed.subject,
      text: myparsed.text,
      html: myparsed.textAsHtml,
      attachments: myparsed.attachments,
      headers: myparsed.headers,
    };
    sendsmtp(mailOptions);

}
async function sendsmtp(mailOptions)
{
  transport.sendMail(mailOptions, function(error, info){
    nodemailerTransport.close();
  });
}

Any help on figuring out how to handle attached eml/msg correctly would be appreciated :)

erSitzt commented 2 years ago

This is how the mail looks, when i send it through Mailhog, before forwarding it to O365/Gmail ... with the same result, works in gmail , broken in outlook (client and web)

Cc: d.someone@somedomain.de
Content-Type: multipart/alternative; boundary="--_NmP-4a03a036f0ddd48e-Part_1"
Date: Fri, 02 Sep 2022 09:08:50 +0000
From: max.power@somedomain.de
MIME-Version: 1.0
Message-ID: <1f9786b2-d3ed-feb0-0e2d-6d334ba2e759@somedomain.de>
Received: from [127.0.0.1] by somedomain.de (MailHog)
          id 0pMRYIDXioJvAs12PlSX7ZlH3bc1MRmFQciL31k2VbY=@somedomain.de; Fri, 02 Sep 2022 09:08:50 +0000
Return-Path: <max.power@somedomain.de>
Subject: Re: Test [Aufgabe #369138]
To: someone@gmail.com

----_NmP-4a03a036f0ddd48e-Part_1
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

test

----_NmP-4a03a036f0ddd48e-Part_1
Content-Type: multipart/related; type="text/html";
 boundary="--_NmP-4a03a036f0ddd48e-Part_3"

----_NmP-4a03a036f0ddd48e-Part_3
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<p>test</p>
----_NmP-4a03a036f0ddd48e-Part_3
Content-Type: message/rfc822; name=message.eml
Content-ID: <6311c8223928d_9c25e5480182@redmine-dev-858c7dc549-tp5lx.mail>
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=message.eml

UmVjZWl2ZWQ6IGZyb20gREI4UDE4OU1CMDY5Ny5FVVJQMTg5LlBST0QuT1VUTE9PSy5DT00gKDI2
###

Lots of base64 here... removed for readability

###
VlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWDQpWVlZWVlZW
VlZWVlZWVlZWVlZVPQ0KDQotLXNnbmlyay03NzNmODExNi1lMmRiLTQyMjgtOTU4MS1mZDZhMGI0
ZDk4YmItLQ0K
----_NmP-4a03a036f0ddd48e-Part_3--

----_NmP-4a03a036f0ddd48e-Part_1--
erSitzt commented 2 years ago

And this is the same mail directly from redmine to mailhog

Cc: someone@somedomain.de
Content-Transfer-Encoding: 7bit
Content-Type: multipart/mixed; boundary="--==_mimepart_6311cb9676089_9c25e54804c6"; charset=UTF-8
Date: Fri, 02 Sep 2022 11:23:34 +0200
From: max.power@somedomain.de
In-Reply-To: <trinity-a2e9c296-08b5-467a-8bde-ea29ed81edde-1662036422310@msvc-mesg-gmx102>
Message-ID: <6311cb96781e7_9c25e5480566@redmine-dev-858c7dc549-tp5lx.mail>
Mime-Version: 1.0
Received: from somedomain.de by somedomain.de (MailHog)
          id T2VaoZM7P0CAMI-DcXKy21AhmnO9Qs3-jajJp2EAyfg=@somedomain.de; Fri, 02 Sep 2022 09:23:34 +0000
Return-Path: <max.power@somedomain.de>
Subject: Re: Test [Aufgabe #369138]
To: someone@gmail.com
X-Redmine-Ticket-ID: 369138

----==_mimepart_6311cb9676089_9c25e54804c6
Content-Type: multipart/alternative;
 boundary="--==_mimepart_6311cb9675f3d_9c25e54803ca";
 charset=UTF-8
Content-Transfer-Encoding: 7bit

----==_mimepart_6311cb9675f3d_9c25e54803ca
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

test

----==_mimepart_6311cb9675f3d_9c25e54803ca
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <style type="text/css" media="screen">

      </style>
  </head>
  <body>
    <div id="email_header">

    </div>
    <div class="wrapper" id="email_body">
      <p>test</p>

    </div>
    <div id="email_footer">

    </div>
      <span style="background-image: url(https://redmine-dev-zentrale.dev.somedomain.de/mlnk/Q-wvQ4NfLw2rBaTsoTxMhA)"></span>
  </body>
</html>

----==_mimepart_6311cb9675f3d_9c25e54803ca--

----==_mimepart_6311cb9676089_9c25e54804c6
Content-Type: message/rfc822;
 filename=message.eml
Content-Transfer-Encoding: 
Content-Disposition: attachment;
 filename=message.eml
Content-ID: <6311cb9678bdc_9c25e54806f9@redmine-dev-858c7dc549-tp5lx.mail>

Received: from DB8P189MB0697.EURP189.PROD.OUTLOOK.COM (2603:10a6:10:122::24)
 by VI1P18901MB0830.EURP189.PROD.OUTLOOK.COM with HTTPS; Thu, 1 Sep 2022
 12:47:05 +0000
Received: from OS6P279CA0038.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:32::11)
 by DB8P189MB0697.EURP189.PROD.OUTLOOK.COM (2603:10a6:10:122::24) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Thu, 1 Sep
 2022 12:47:03 +0000
Received: from HE1EUR04FT042.eop-eur04.prod.protection.outlook.com
 (2603:10a6:e10:32:cafe::10) by OS6P279CA0038.outlook.office365.com
 (2603:10a6:e10:32::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15 via Frontend
 Transport; Thu, 1 Sep 2022 12:47:03 +0000
Authentication-Results: spf=pass (sender IP is 212.227.15.19)
 smtp.mailfrom=gmx.de; dkim=pass (signature was verified)
 header.d=gmx.net;dmarc=pass action=none header.from=gmx.de;compauth=pass
 reason=100
Received-SPF: Pass (protection.outlook.com: domain of gmx.de designates
 212.227.15.19 as permitted sender) receiver=protection.outlook.com;
 client-ip=212.227.15.19; helo=mout.gmx.net; pr=C
Received: from mout.gmx.net (212.227.15.19) by
 HE1EUR04FT042.mail.protection.outlook.com (10.152.26.159) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.5588.10 via Frontend Transport; Thu, 1 Sep 2022 12:47:02 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
        s=badeba3b8450; t=1662036422;
        bh=gIq7BpDF7bjh7vajOaauYC0G9HptVABk6DQh3qePMqM=;
        h=X-UI-Sender-Class:From:To:Subject:Date;
        b=Rk/yRGO+HMw3RqRo8jHeuLRG5UK1PMRfWTK6AIdvbdizW8ZoWCfjOLNj4EL2RTWYf
         0ityEkxS+Y4eeN4is6sGWGPDUu7cJ1hH/TqJ5yvk8lmNOpOkrC1+zxXVq9SkJwvR04
         8+U8mpWr6KNW8IHbYUyyuJV1OzXvdpN5YiA7atXw=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [91.25.123.116] ([91.25.123.116]) by
 msvc-mesg-gmx102.server.lan (via HTTP); Thu, 1 Sep 2022 14:47:02 +0200
Message-ID: <trinity-a2e9c296-08b5-467a-8bde-ea29ed81edde-1662036422310@msvc-mesg-gmx102>
From: someone@gmx.de
To: helpdesk@somedomain.de
Subject: Test
Content-Type: multipart/mixed;
 boundary=sgnirk-773f8116-e2db-4228-9581-fd6a0b4d98bb
Date: Thu, 1 Sep 2022 14:47:02 +0200
X-Provags-ID: V03:K1:sCHpEwO5lJvI4COcprlh7x0YKKXCbD8bDbNEZewsGXCGUNR+GyYtbER58agApjTVpItR0
 4fUFMPiKrjw+fyoUUaqeMXoXev5KLSzmywhf5uHSH0KHNPbumWwZt8cu+fN19Ijwrw3NsdFAd8L5
 KJ8GgbNEGUaq/g7eb2Rz2kE04i6eglIkcMp7ZAq7fv/aLL3T3HSIUJxCVnvFD9I9mvm+cbIZzusf
 Fmdzf7Z0q89t6CiPodFluNS6sDrt3j2Lajc92/C9t/WaQRpSlmcxe5bdKJGLdv+70c2qH8qbKeB4
 gA=
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:yYYRdf+Bp5Y=:DVkvqHeCmZiADJvs5D8tDC
 rcbLGTf6SJPKq26zPOcfmUkQJNBGq3qwBqb0iF+212g3XFNRYwdAGCIsL9aiP+aOOkeA+aQjr
 gTc1Ej5HmOHMZ9vLsZnc/2/DadYePeHqtBwjIUjSvg/i8ioYJI3vWp3CIp2lZqIL/gz6kt508
 g/C/AdXEjc9FHEwIPhGv5P2/dxOvNI2VRboQ7Thw6VagAbevUWxK2jJo73bNHCHjAbpy/yEgB
 78jNTcjEwaTKVU0rczqxk4Eytwt45g9bJLGfpo6OeIJob1CbGNs0W3LwJWnlsvRpv6/czmx4A
 ZDociF1OSlF/5DrXkPSX4xCz1P11QysG6z3sGM/LBabIpbSqpRMqUzTFYcaHia5dA+ElJ+cPS
 3Elee3qxLsA1rTu5h1ki2TZmTrN/RgjjG4Sf9r4khuxRYQunSZsf8sIaXGZcYxkJhPRxCDbux
 Q1UYmMGE5Mj627hKqnY+D9yk8ifeJ057EYexAKfL/G4AG9VDjA0LOsQTqP24H1p/LA6t0g8JD
 hhl+O78ModNdjQh5IOyH4qJvdJKzBxj5xtIA3/cOZi/9UTgxYxbK7yafLFkf/ZxATVMVH161B
 AxuZApcI5pKT6e89lAuq8zYr8yH50j7ZaJUwdaDd1eJ8IleFYFa6xzNt+NeT20TYl1hkgcEJC
 6eqjo6Eq9iWvXA++tKZVW9BhgsHdijNXvJu3M1nrsBVI7y7OhidPQnjLdzbTFtEi+vJIStBTN
 SFIo678C/lo+hkSSSrzlVSfdbBy4b5WUkaExxwmDFwnE0QqAraxK01jrL9D3eYSeiXbibDufV
 WBx0+ntmGWH7Y2T4Y0dkdYYcVyHz5YYg7g51kOGZH+rgZZ4KLsx5ouolWU1Ic4D99f9rlH4
Return-Path: someone@gmx.de
X-MS-Exchange-Organization-ExpirationStartTime: 01 Sep 2022 12:47:03.0702
 (UTC)
X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit
X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000
X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit
X-MS-Exchange-Organization-Network-Message-Id:
 8239312c-eff4-410c-b49e-08da8c1811b7
X-EOPAttributedMessage: 0
X-EOPTenantAttributedMessage: 094a7fc1-25dc-4512-b446-33d24bd0d434:0
X-MS-Exchange-Organization-MessageDirectionality: Incoming
X-MS-PublicTrafficType: Email
X-MS-Exchange-Organization-AuthSource:
 HE1EUR04FT042.eop-eur04.prod.protection.outlook.com
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Office365-Filtering-Correlation-Id: 8239312c-eff4-410c-b49e-08da8c1811b7
X-MS-TrafficTypeDiagnostic: DB8P189MB0697:EE_
X-MS-Exchange-AtpMessageProperties: SA|SL
X-MS-Exchange-Organization-SCL: 1
X-Microsoft-Antispam: BCL:0;
X-Forefront-Antispam-Report:
 CIP:212.227.15.19;CTRY:US;LANG:de;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mout.gmx.net;PTR:mout.gmx.net;CAT:NONE;SFS:(13230016)(4636009)(7916004)(84050400002)(336012)(956004)(7596003)(356005)(26005)(33964004)(86362001)(9686003)(3480700007)(58800400005)(34206002)(75640400001)(1096003)(4006050)(5660300002)(33716001)(7116003)(8676002)(564344004)(19618925003)(6706004);DIR:INB;
X-Auto-Response-Suppress: DR, OOF, AutoReply
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2022 12:47:02.9296
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8239312c-eff4-410c-b49e-08da8c1811b7
X-MS-Exchange-CrossTenant-Id: 094a7fc1-25dc-4512-b446-33d24bd0d434
X-MS-Exchange-CrossTenant-AuthSource:
 HE1EUR04FT042.eop-eur04.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: Internet
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8P189MB0697
X-MS-Exchange-Transport-EndToEndLatency: 00:00:02.2517859
X-MS-Exchange-Processed-By-BccFoldering: 15.20.5588.010
X-Microsoft-Antispam-Mailbox-Delivery:
        ucf:1;jmr:0;auth:0;dest:C;OFR:CustomRules;ENG:(910001)(944506478)(944626604)(920097)(930097);
X-Microsoft-Antispam-Message-Info:
        =?utf-8?B?azVlMzBkeSs2UnhLa2NoUU1TNEhMMzl4UHU3YStyM0lIeXJ0SDk3S01Kd2hz?=
 =?utf-8?B?dk5KOTlRelFnaG5nOXlQNmxUYXRzTEpTaHpVNGtWSGVPZjdpbCtlSFY1WnF4?=
 =?utf-8?B?WDNjOXpxdmJyN1Z2MFhJaTBNWStoeW9ta2JhZ3VXazdvdGszS0pBLzFEbjRW?=
 =?utf-8?B?T2I5bkdPV1d5d2I3T2pMUjZZUjJXMEd2d21BRzRSMUtFUzg3Zkx2TGJYREp5?=
 =?utf-8?B?M3VpNy93RDlLZ0VZNG5HSk1YQnk3QWNOVWdSUmg0VW9OSmhNNlVLVXJPeXBt?=
 =?utf-8?B?RU5xdnAwY29id3ViUjJkZk1URFZERnJPRjNXSlg0S21xNGM5bnJSZkJzcUYr?=
 =?utf-8?B?cWdwZzZkWTNjMStPajVJOE9XdnIyZzVkcWZwSTNDc08vdk1IVTBjZ2llVzdK?=
 =?utf-8?B?ZFZkZnVUUGdkd1FtMHR0azhrNWgwNkU4ZFlJaTNsVUM1M01Da3QxQklVWDdR?=
 =?utf-8?B?OVBPU29tWGpicVlTdHRPZG5wWWJMVjg3NHVUWkllUlV4c3Q4cUZ3TWE4YytT?=
 =?utf-8?B?M1Rmcm9pcytRVGFNVGVzOXVJSXF0VTFpZzZsc3ZmVk9Ra0FWVy9KZ0F1Umx5?=
 =?utf-8?B?WEZ5a1llenFub3hud3U0QU1DSGgzdURlVFlGaVgzd2dqZUhsRFI2TkFKb1dM?=
 =?utf-8?B?eEFUQlF3OUF5c1V4UGVTUjdCMjJyeVNra1NTT0pnTHdQWjZhTE51OThlNDBk?=
 =?utf-8?B?WER2UGdrcVhJREZhWVFyY01NKzhOOUxhVHpjOElBbkFLckpHK2R0QjhwRlJW?=
 =?utf-8?B?MHdGdHF6ZldqU0ROK3N2QmFFNDFnV1dCSVNJRUtjYmJCN2VOV2dNdjY0MnlL?=
 =?utf-8?B?UGo0WS9vWVR3SmlyK1pyNzErYVV1b2E1S2lWNENvMGxYck5LR2ZuTmhOeDdj?=
 =?utf-8?B?MW1VcFVvTTduRER1cndEWVN1YWRHUWFESXc5ZkExaVVRY05jYTZFTzE1emtn?=
 =?utf-8?B?QTZjbTBJQzR0ZFd4dmVwemVsVFhrVk9CQUc0ZkVHNUc0U0x4QXJTSW1VVW5z?=
 =?utf-8?B?QTVBYWpmK2o3SW5talRlM0E0dkV0ZzZaOFdhdVNteDd6NU02Q0JmaWYrY2Ev?=
 =?utf-8?B?ZHRXRks0V0p3SWgwbmtycUhYOWdsaGxPajhKYTBPaTlvTU5MTHdHQ0d1UnBh?=
 =?utf-8?B?Q3EzcVFxNHdQWUg4eCt5bTlPT1ZBSXkrdnZVeDMyM1NqcVJuWWFIbXc2RHpa?=
 =?utf-8?B?cythT09FSE5sR2VzMmR4VC9TRTRtN3NiWE1oUzNWdWtsY0Y0S1RBWjJKaEIr?=
 =?utf-8?B?V1ZCN3F1eGtRWlNtV1hQMXlPNGtleE1LZXV6THNZSzJEakNja0t1ck5YTkJM?=
 =?utf-8?B?bUluQXk0UVBYZVA1MnEwWUlPTXpSVWswNUpWS0c1NTlrampXVjBXeEFWNjVs?=
 =?utf-8?B?RHlKUnNOVmFxdnhlMnNISGl6VGpZQWk0SUNCR2R3Tnc4M1YyR1dvNklSMlRw?=
 =?utf-8?B?WndSYzlDVlR4YXFpaW9QQVRlUHJsZHNHdktiVFRUNWV5UUt0enBPN3hhRzBU?=
 =?utf-8?B?blNjakhLMy9uNExEdi84Tm9OUk91UW9ERUgzNkJPWUdLYVZrV3BGZFEzR2pY?=
 =?utf-8?B?MUF6UXU5Q0NRTzJ5N2V1WVhxQWVEZmxtc0FoTytWY1pLc3ZReGZtdUFuM1B2?=
 =?utf-8?B?U1p1eDVER1NSN3ZyQ1lvOXNJby9oZmVjME5VQmFjcFV3aGo2aHBuUFhRcEU3?=
 =?utf-8?B?aktXVUFBWU5wM3FCTUlPNWVJaEQvemNPVEhDYmw2dkxRWWpWSlI4dDc1dFBX?=
 =?utf-8?B?aVZNRDhLUFdiNjIrelEwMml3cytjTkFzZEhwdG9WSUpvc1FIOUwyZHQ2akJw?=
 =?utf-8?B?OHE3dTdnOFdrenA0TTdUUHlvYmlXVEkxcFZnbFlZQTF0NkRVd1BzMlUyWTNs?=
 =?utf-8?B?NHQ3blY2NXlISy95eWNOOWg5TEdxWHV4Y0ZBK2RVSnMwWjlZSnFtVVdGbXMx?=
 =?utf-8?B?NkxZTVZvYzdtblIxS3JJazNqUk9qZUFBcUNZTDVKWk1MTGtpK3lncmRYNmVs?=
 =?utf-8?B?UWRUdVBvOGw0SjJTZUR3Z3B2RWlWbzZVR21aNUlMRDRjekpRNm1DQkxYSFpQ?=
 =?utf-8?B?UXE5RGhGZEJBc0loVWhKMzlLOEg2T3BXakRWaDJXYmg1YkFMSUdDMXg2Mndq?=
 =?utf-8?B?Y2syQ0pObmhyanpqdkxRMk84aVhSa0VhVmlhenZCc1ltbC8zQTlpWDNKWTEx?=
 =?utf-8?B?SUZnNG94RnVVek10UE8xRmRRNmVOMGhBZm9VOG9rUU15elJ3V2o2dzE1ZFBS?=
 =?utf-8?B?N0RpNjdwMnVPVytJdXNoZDdBeFA2Tm56VjE1U0hrUTI1djMyWEpjcURkdnFQ?=
 =?utf-8?B?aXhYZEl3T2l6VWhpOUlvL0pUdUJTQUNJaC9zVUMydThFTEJ6ZVFyL3hzejQw?=
 =?utf-8?B?U3JtVnRTMndvaFBWS09UYVl4MGtuU1ZZSGt0VjdDdFZZeE4zemJNUVE3ZWpw?=
 =?utf-8?B?TEloSFQ0Z3A2VDRvVTgrOG1qWVErQnZ3TlVnUWNBdTZLbGxXVFE1eGtOWk5N?=
 =?utf-8?Q?TeJMW9F1CQV?=
MIME-Version: 1.0

--sgnirk-773f8116-e2db-4228-9581-fd6a0b4d98bb
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Gesendet mit der GMX Mail App

--sgnirk-773f8116-e2db-4228-9581-fd6a0b4d98bb
Content-Type: audio/mpeg
Content-Disposition: attachment; filename=my_man.mp3
Content-Transfer-Encoding: base64

SUQzBAAAAAAAQFRQRTEAAAAIAAADbGVsYW5kAFREUkwAAAALAAADNC8yNC8yMDE2AFRTU0UAAAAP
AAADTGF2ZjU0LjI5LjEwNAD/+5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbmZv
###

Lots of base64 here... removed for readability

###
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVU=

--sgnirk-773f8116-e2db-4228-9581-fd6a0b4d98bb--

----==_mimepart_6311cb9676089_9c25e54804c6--