Search The ForumSearch   RegisterRegister  LoginLogin

MailBee.NET Objects

 AfterLogic Forum : MailBee.NET Objects
Subject Topic: Partially avoid quoted-printable Post ReplyPost New Topic
Author
Message << Prev Topic | Next Topic >>
paaltuv
Newbie
Newbie


Joined: 30 October 2012
Online Status: Offline
Posts: 2
Posted: 30 October 2012 at 8:50am | IP Logged Quote paaltuv

I'm trying to send an email which is encoded with Quoted-Printable, but I'd like a small part of that email to be excempt from the encoding.

In short I want to be able to insert something like this in the plain body text:
[[RANDOM]]=
instead of this:
[[RANDOM]]=3D

Does anyone have any insight on how I could do this?

Thanks,
Pål
Back to Top View paaltuv's Profile Search for other posts by paaltuv
 
Alex
AfterLogic Support
AfterLogic Support
Avatar

Joined: 19 November 2003
Online Status: Offline
Posts: 2206
Posted: 30 October 2012 at 9:30am | IP Logged Quote Alex

You can generate the e-mail normally, then save MIME output into a memory array or stream (with MailMessage.GetMessageRawData method), then find what you need in the message data and cut 3D off.

I.e. you will need to perform search over byte array or stream. .net does not provide functions for this but it's not difficult to implement such function. Or, you can simply convert the byte output into a string using Encoding.GetEncoding(1252).GetString(bytes), then search that string and remember the indices found. These indices in the string will be the same as in the byte array because 1252 encoding always produces the same number of characters like in the source byte array.

Thus, when you found that "[[RANDOM]]=" is at, let's say 567 offset, you will need to combine your resulting array from 0,567 block and from 567+len("[[RANDOM]]"),-1 block (assuming -1 means the rest of the byte array). Of course, if you have multiple entries which need to be cut, the procedure must be repeated in a loop.

Once you have the corrected MIME source, you can load it into MailMessage with .LoadMessage(byte array or stream), and you can send it. The MailMessage object in question can be the one in Smtp.Message property:
Code:

smtp.Message.BodyPlainText = "smth";
...
bytes1 = smtp.Message.GetMessageRawData();
string1 = Encoding.GetEncoding(1252).GetString(bytes1);
// then, find N = how many times "[[RANDOM]]=" appears in the string1
// then, create bytes2 array which is less than bytes1 by N * len("3D")
// then, fill bytes2 by blocks of bytes1 between "[[RANDOM]]=3D" entries so
// that "3D" would be cut off.
...
smtp.Message.LoadMessage(bytes2);
smtp.Send();
Back to Top View Alex's Profile Search for other posts by Alex
 
paaltuv
Newbie
Newbie


Joined: 30 October 2012
Online Status: Offline
Posts: 2
Posted: 30 October 2012 at 11:47am | IP Logged Quote paaltuv

Great answer, thanks!
Back to Top View paaltuv's Profile Search for other posts by paaltuv
 

If you wish to post a reply to this topic you must first login
If you are not already registered you must first register

  Post ReplyPost New Topic
Printable version Printable version

Forum Jump

Powered by Web Wiz Forums version 7.9
Copyright ©2001-2004 Web Wiz Guide