 |
|
 |
First of all single part message can't have attachment and body text. It can be text message or attachment message.
SO your message alreay is multipart message.
|
|
|
|
 |
|
 |
It starts off as a singlepart attachment message, but I need to create a body on the fly.
I think I have something here, I just don't know if I'd screw some other type of message up:
private void CheckMultiPartAndSwitch()
{
if (MainEntity.ContentType != MediaType_enum.Multipart && MainEntity.ContentDisposition == ContentDisposition_enum.Attachment)
{
string _sFileName = MainEntity.ContentDisposition_FileName;
MediaType_enum _ct = MainEntity.ContentType;
ContentTransferEncoding_enum _enc = MainEntity.ContentTransferEncoding;
byte[] _data = MainEntity.DataEncoded;
MainEntity.Data = null;
MainEntity.ContentType = MediaType_enum.Multipart_alternative;
MainEntity.ContentDisposition = ContentDisposition_enum.NotSpecified;
MainEntity.ContentDescription = "";
MimeEntity _attachEntity = MainEntity.ChildEntities.Add();
_attachEntity.ContentDisposition = ContentDisposition_enum.Attachment;
_attachEntity.ContentDisposition_FileName = _sFileName;
_attachEntity.ContentType = _ct;
_attachEntity.ContentTransferEncoding = _enc;
_attachEntity.DataEncoded = _data;
}
}
I have added a set to this:
Mime.cs
public string BodyText
{
get
{
MimeEntity[] entities = this.MimeEntities;
foreach (MimeEntity entity in entities)
{
if (entity.ContentType == MediaType_enum.Text_plain)
{
return entity.DataText;
}
}
return null;
}
set
{
MimeEntity[] entities = this.MimeEntities;
foreach (MimeEntity entity in entities)
{
if (entity.ContentType == MediaType_enum.Text_plain)
{
entity.DataText = value;
return;
}
}
CheckMultiPartAndSwitch();
MimeEntity textEntity = MainEntity.ChildEntities.Add();
textEntity.ContentType = MediaType_enum.Text_plain;
textEntity.ContentTransferEncoding = ContentTransferEncoding_enum.QuotedPrintable;
textEntity.DataText = value;
}
}
|
|
|
|
 |
|
|
 |
|
 |
Hello!
as subject:
Could you please write a simple sample code that reads a eml file and load it on a MailMessage class of .net framework?
thank you.
|
|
|
|
 |
|
|
 |
|
 |
Following message store as a 1.email and trying to parse.
But intialization get error INVALID-FIELD MESSAGE-ID, This emails comes from X-user clients
so failed to parse for display on website have any solution. I think problem because space before
Message id how can I handle it.
================ Copy from above content in a file =====================
Message-ID: <200906121804578_11>
From: mmtclimited@hometown.net
To: mmtclimited@hometown.net
Subject: RENOVATION OF SHOP AT BHAWAN
Date: Fri, 12 Jun 2009 10:18:04
Mime-Version: 1.0
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
<HTML>
<HEAD></HEAD>
<BODY><A href="http://www.mmtclimited.com/tender/tender_details.php?id_pk=1524">http://www.mmtclimited.com/tender/tender_details.php?id_pk=1524</A></BODY>
</HTML>
=================Copy End =====================
|
|
|
|
 |
|
 |
Dont know, i can cparse that message ok.
Though message id is suggetsted to have "@" in like: part1@part@
|
|
|
|
 |
|
 |
Hi Ivar,
I tried to re-compile your latest code downloaded from http://www.lumisoft.ee/lswww/download/downloads/Net/[^] and used the output dll into my project.
But, compiling my project with the new compiled DLL it gives this error:
-------
'LumiSoft.Net.Mail.Mail_Message' does not contain a definition for 'Attachments' and no extension method 'Attachments' accepting a first argument of type .
-------
It look like, your latest code doesn't is not as latest as your dll found in some of the sample. So, I cannot use the 'Atachments' method.
Could you upload the latest code, so that I could try to solve the attachment problem?
Thanks.
|
|
|
|
 |
|
 |
Latest code always:
SVN:
https://svn.lumisoft.ee:8443/svn/
User: readonly
Password: readonly
|
|
|
|
 |
|
 |
Thanks. I really appreciate that.
But my current "TortoiseSVN" client program seems not the latest as there is no way i can put in the login name and password. So, I cannot download it. Could you just email me your latest Mail_Message.cs
I'm sorry for this trouble. At the mean I'm upgrading my TortoiseSVN client.
rgds,
sarif
|
|
|
|
 |
|
 |
Just use https://svn.lumisoft.ee:8443/svn/lumisoft_net/trunk/ for check-out...
|
|
|
|
 |
|
 |
Hi Ivar,
I tested it two ways:
a) convert to byte array --> parse from byte array --> read the attachment
b) save it as a file --> parse from file --> read the attachment.
In both cases, the exception is thrown at the code line below:
MIME_Entity entity = mime.Attachments[0];
The way we attach the file (as shown in "..\MailMessageExamples\Program.cs") like below:
multipartMixed.BodyParts.Add(Mail_Message.CreateAttachment("attachment.txt"));
Or is this bugs?
rgds,
sarif
|
|
|
|
 |
|
 |
Hi Ivar,
Thanks for the reply of my earlier question. And yes, I can now convert to byte array of my Mail_Message object. Thank you.
My next problem is it cannot parse the 'attachment' object. The error is like below:
----------------------
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> LumiSoft.Net.ParseException: Header field 'ContentDisposition' parsing failed.
at LumiSoft.Net.MIME.MIME_Entity.get_ContentDisposition()
----------------------
I'm following your sample on how to add attachment, like below:
//--- application/octet-stream -----------------------------------------------
multipartMixed.BodyParts.Add(Mail_Message.CreateAttachment("pic.jpg"));
The only different is, your sample is attaching txt file while mine is jpg file. Should I use different method, then?
thanks again.
|
|
|
|
 |
|
 |
Hi Ivar,
Thanks for the demo list link. I still have question about MIME to byte array problem:
In the old code: I can do like below:
---------
Mime m = new Mime();
MimeEntity mainEntity = m.MainEntity;
...
byte[] byteStream = m.ToByteData();
---------
In the new code; we should use "Mail_Message" instead
----------
Mail_Message msg = new Mail_Message();
msg.MimeVersion = "1.0";
...
------------
So, how to convert this "msg" to byte array?
I need this mime message to be converted as byte array before I can send it my proxy.
rgds,
sarif
|
|
|
|
 |
|
 |
MemoryStream ms = new MemoryStream();
ToSteam(ms
|
|
|
|
 |
|
 |
Hi Ivar,
I downloaded your latest code from here:
http://www.lumisoft.ee/lswww/download/downloads/Net/[^]
I even downloaded your help page from there, but I get confused of how to use this new code. The sample given is meant for the old code, and the help doc is really too technical that i don't know how to start.
Could you provide the new help related with new code which have step by step of how to use the class by case (start from basic to advance)?
My specific problem is how to convert the Mime object data to bytes array.
|
|
|
|
 |
|
|
 |
|
 |
Can you give us an update on the status of the new development?
Does the code that's included here have all of the latest bug fixes or should we be using the code on your website even though the old methods are marked as [depreciated]?
Thanks!
|
|
|
|
 |
|
 |
Probably now new mime ready, only bug fixes planned - if any arise.
|
|
|
|
 |
|
 |
I have been looking for a free mime parser for a long time, this is the first that really works with swedish letters (åäö)! Thank you!
|
|
|
|
 |
|
|
 |
|
 |
Hi,
On your project at http://www.lumisoft.ee/lsWWW/Download/Downloads/Net, the code I'm using (and the version that your help refers to) now seems to be in the "old" folder. I tried to use the "new" classes but couldn't find my way into them (eg having parsed a message I couldn't even work out how to access its body text), so I am continuing to use the "old" Mime.Parse() etc.
It's confusing because these "old" files now refer to some new files, and there is some duplication (eg MimeUtils.cs and Old\Mime_Utils.cs).
Please could you clarify which versions of which files you would like us to use, eg should we discard old/Mime_Utils.cs?
Many thanks again for an enormously useful project.
|
|
|
|
 |
|
 |
Hi,
the old folder has current mime, new(total rewrite) haven't completed yet. Some work is in progress.
|
|
|
|
 |
|
 |
Hello,
Thanks for the excellent project.
I'm trying to save a mail out to EML format, but the time is getting corrupted. DateTimeToRFC2822 converts the time form local time to UTC, but this is all wrong: the message's time is in the sender's time zone, not mine, and anyway mail clients seem to assume it's in local time not UTC. Why is it converting to universal time?
Thanks
|
|
|
|
 |
|
 |
Hi,
The method is UTC because most places should preserve UTC time not local, and display app should use DateTime.ToLocal.
I can add paramter bool utc, then you can control time what is returned.
|
|
|
|
 |