Hi;
First problem - this works:
// MemoryStream html ... is created and is 11004 bytes long, buffer is 16K
string htmlMsg = enc.GetString((html.GetReport()).GetBuffer(), 0,
(int)html.GetReport().Length);
htmlMsg = htmlMsg.Substring(3);
MailMessage mail = new MailMessage(from, to, subject, txtMsg);
mail.AlternateViews.Add(new AlternateView(new
MemoryStream(enc.GetBytes(htmlMsg)), MediaTypeNames.Text.Html));
This does not:
// MemoryStream html ... is created and is 11004 bytes long, buffer is 16K
MailMessage mail = new MailMessage(from, to, subject, txtMsg);
mail.AlternateViews.Add(new AlternateView(html.GetReport(),
MediaTypeNames.Text.Html));
Why does the second approach fail?
Problem two - if I do not remove the first 3 bytes of the html text - the
signature that is inserted at the begining of html files, then the mail
message will have ??? as it's first line.
Why does it not recognize this?

Signature
thanks - dave
david_at_windward_dot_net
http://www.windwardreports.com
Cubicle Wars - http://www.windwardreports.com/film.htm
Walter Wang [MSFT] - 12 Feb 2007 06:04 GMT
Hi Dave,
This issue seems related to how your "html.GetReport()" returns the Stream.
Would you please describe more about the GetReport() method? For example,
if you're opening a UTF-8 encoded file with BOM (byte order mark:
http://unicode.org/unicode/faq/utf_bom.html#22), the first three bytes are
EF BB BF. The correct way to read such file is to read it as UTF-8 encoded
text file instead of binary.
Please also note that files created using default StreamWriter settings
will have this BOM in the file.
http://msdn2.microsoft.com/en-us/library/system.io.streamwriter.aspx
Sincerely,
Walter Wang (wawang@online.microsoft.com, remove 'online.')
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications. If you are using Outlook Express, please make sure you clear the
check box "Tools/Options/Read: Get 300 headers at a time" to see your reply
promptly.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
David Thielen - 12 Feb 2007 21:50 GMT
Yes, it is a MemoryStream that contains a byte[] that is UTF-8. What should I
do different?

Signature
thanks - dave
david_at_windward_dot_net
http://www.windwardreports.com
Cubicle Wars - http://www.windwardreports.com/film.htm
> Hi Dave,
>
[quoted text clipped - 37 lines]
>
> This posting is provided "AS IS" with no warranties, and confers no rights.
Walter Wang [MSFT] - 13 Feb 2007 02:49 GMT
My suggestion is not to read the UTF-8 file (with BOM) into MemoryStream
directly, you should use a StreamReader with Encoding.UTF8 to read it then
pass the StreamReader.BaseStream to AlternateView's constructor:
using (FileStream fs = new FileStream(@"c:\temp\1.txt", FileMode.Create,
FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
{
sw.Write("<h1>hello</h1>");
}
}
// the file will have UTF-8 BOM
using (FileStream fs = new FileStream(@"c:\temp\1.txt", FileMode.Open,
FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(...);
mail.To.Add(...);
mail.Subject = "Test AlternateView";
mail.Body = "hello";
mail.AlternateViews.Add(new AlternateView(sr.BaseStream,
MediaTypeNames.Text.Html));
SmtpClient smtp = new SmtpClient(...);
// smtp.Credentials = ...
smtp.Send(mail);
}
}
Regards,
Walter Wang (wawang@online.microsoft.com, remove 'online.')
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
David Thielen - 21 Feb 2007 03:44 GMT
great approach - thanks - dave

Signature
thanks - dave
david_at_windward_dot_net
http://www.windwardreports.com
Cubicle Wars - http://www.windwardreports.com/film.htm
> My suggestion is not to read the UTF-8 file (with BOM) into MemoryStream
> directly, you should use a StreamReader with Encoding.UTF8 to read it then
[quoted text clipped - 41 lines]
>
> This posting is provided "AS IS" with no warranties, and confers no rights.