Chilkat Email Object - Save email without attachments - chilkat

I need to save the email without the attachments in EML format with Chilkat.
I'm using VB.NET and an IMAP connection and I have already checked SaveAllAttachments (that does the opposite saving only the attachments) and SaveEml (for email with attachments included).
'Attachments only
email.SaveAllAttachments(MyInPath)
'Email with attachments in EML format
email.SaveEml(MyInPath & "\" & email.GenerateFilename())
I'd like to keep a regular EML format (with header, sender, subject, body erc.) but without the attachments (so not just the body on a TXT file).
Is there a way to do it simply?

Someone who deleted his post (I don't know why) said to use email.DropAttachments() and posted this link:
https://www.chilkatsoft.com/refdoc/vbnetEmailRef.html
It's a little bit strange to save the whole email and then delete the attachments but it simply works

Related

How to get a readable email from AWS S3 after it's stored there as an object?

I've set up SES to receive emails on my domain and then store the emails to S3. I trigger an SNS notification when a new email has arrived which triggers a lambda to do processing with the contents inside the email. Everything works as expected however, I'm not able to get any sensible data out of the emails I fetch from S3. For instance, getting an object from S3 of the email gives me this data :
<div dir=3D"ltr">ssadsadasdasdas</div><br><div class=3D"gmail_quote"><div d=
ir=3D"ltr" class=3D"gmail_attr">On Tue, Nov 5, 2019 at 5:30 PM Rahul Patil =
<<a href=3D"mailto:rahul.patil#name.com">rahul.patil#name.com<=
/a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><=
div dir=3D"ltr">asdsadasdasdasd</div><br><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">On Tue, Nov 5, 2019 at 5:27 PM <<a href=
=3D"mailto:rahul#name.com" target=3D"_blank">rahul#name.com</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Body<b=
r>
The code which fetches the data
const obj = await s3.getObject(getObjectParams).promise();
console.log(obj);
let objectData = obj.Body.toString("utf-8");
console.log(objectData)
I don't need all that HTML, just the sender's email and the body would be sufficient. Is there an inbuilt way I can filter the required data? Any node-email-parser modules that can be plugged inside the lamba? More importantly, Am I doing it the right way? Thanks!
Yes, you need a parser.
Amazon SES will store incoming emails in S3 in RFC822 format, meaning exactly as they are received from the wire. This is by definition plain text, no matter how complex the email, even if it has attachments. Somewhere inside that RFC822 text piece there may or may not be some HTML in the body. An email's body can be plain text only, it can be HTML (most common) or it can be both.
You'll need to use a library which can parse RFC822. There are quite many of those. Which one to use will depend on your language choice. You'll also need to familiarize yourself with the anatomy of an Internet email message, i.e. RFC822. You'll find a wealth of information on that with a bit of googling. Suggestion: Your own email client can most likely save an email in RFC822 format and then you can use that as an example of what an email truly looks like in its 'native' format. Just have a look at it in your favorite text viewer.
Your question can be rephrased into an RFC822 parsing question. Some people refer to such files as .eml files. Same thing.
Happy hunting.

Google Mail API - parse get message headers

Currently I am able to get a full message for a user, but I am trying to get to all the users that are on the "To" header of the message. I am able to get the header value, but hoped there would be an sdk that would actually parse this header for me, as there are a bunch of different formatting of the user info. I am using the node googleapis npm package. If there is not something build in, is there a regex that I could use to parse this "To" mail header?
const to = _.find(message.payload.headers,
(header) => header.name.toLowerCase() === 'to');
'to' now has the value of the header, but this value is just a string of users all formatted in possibly different ways. I need the user's name and email address of each user.
const users = [{name: <name>, email: <email> }]
Currently I am using a regex that is missing some possible formatting of this header.
Regexp may not be the best option for parsing an email To: field. I would recommend using something like https://github.com/andris9/mailparser instead.
Even if you don't have a raw copy of the email, it would be easy enough to reconstruct something similar by appending the strings for the headers and the payload.

How to get email attachment MIME type by file extension?

I'm trying to write a class that would use Mandrill APIs to send an email with an attachment. To do that I need to provide MIME type of the attachment for the base-64 encoded attachment contents. The question is how to get it, assuming using the file extension of the attachment?
PS. I was hoping for something better than a long switch/case situation. But if that's my only option, where can I get the most exhaustive list of such associations?
You can look in the Registry, under either:
HKEY_CLASSES_ROOT\<file extension>\ and see if it has a "Content Type" value.
HKEY_CLASSES_ROOT\MIME\Database\Content Type\, enumerating each subkey until you find one whose "Extension" value contains the file extension.
There is also a FindMimeFromData() function.
If you don't find a matching content type, you can always use application/octet-stream.
Apart to what was suggested in a different answer, here's a hard-coded list of file-extension-to-MIME-types associations that I converted from this Ruby project's JSON list into a C-struct.
Oops, can't post it here. It's too long. Here's the file instead.

IMAP-Can not view contents in outlook

i have implemented an IMAP client (using winsock and openssl) that can fetch emails from my GMail account and save each individual email as .eml file. However, i was not able to view the content using outlook.
I also tried EAgetmail to download email and i can view them in outlook.
http://imageshack.us/photo/my-images/16/eagetmail.png/?sa=0 "Eagetmail viewed in notepad"
http://postimg.org/image/ma635e0xx/ "Eagetmail viewed in outlook"
http://postimg.org/image/xo9piny5f/ "Winsock viewed in notepad"
http://postimg.org/image/oa8tvzo9v/ "winsock viewed in outlook"
I also tried to edit the content of so that it looks similar to the content of Eagetmail but it still does not work. However, if i copy and paste the entire content of EAgetmail then i was able to view it in outlook.
The actual text looks ok, i.e. looks like a correct MIME format. Since you're able to cut/paste it and have it load okay, I suspect something is wrong with the encoding of the file that gets cleared up on the clipboard. Maybe the line endings? Look at it with a hex editor in before and after paste to see what's different.

How to extract an ID from a request's subsample or body in Jmeter & save it in CSV

I am a beginner in Jmeter & trying to save an ID (like ID=1234567) in a HTTP request's response data using regex extractor & a 3rd party plugin called Dummy sampler with Filewriter but I am failing every time. Here is what it looks like:
/Registration/PaymentInformation?accountRegistrationId=372036
My objective is to save these accountRegistrationId in a CSV file & then use them in the following request as a parameter. The only part where I am stuck is capturing them & saving a file. After that I can manage. I have googled everywhere but cant find a solution. Please help me.
Following regex should work - (.*accountRegistrationId=)([0-9]+)(.*)
Use $2$ to retrieve the id.
JMeter regex reference