if (encoding == null)
encoding = Encoding.UTF8;
MemoryStream ms = new MemoryStream (encoding.GetBytes (content));
- AlternateView av = new AlternateView (ms, mediaType);
+ ContentType ct = new ContentType ();
+ ct.MediaType = mediaType;
+ ct.CharSet = encoding.HeaderName;
+ AlternateView av = new AlternateView (ms, ct);
av.TransferEncoding = TransferEncoding.QuotedPrintable;
return av;
}
+2007-12-06 Atsushi Enomoto <atsushi@ximian.com>
+
+ * AlternateView.cs : supply charset info for ContentType.
+ * SmtpClient.cs : for ToQuotedPrintable() input, don't use utf8
+ StreamReader to get input string. Just use Encoding.GetBytes().
+ Fixed bug #346162.
+
2007-12-05 Atsushi Enomoto <atsushi@ximian.com>
* MailMessage.cs : fixing cosmetic .net compatibility. Automatically
#endif
break;
case TransferEncoding.QuotedPrintable:
- StreamReader sr = new StreamReader (av.ContentStream);
- Encoding encoding = contentType.CharSet != null ? Encoding.GetEncoding (contentType.CharSet) : Encoding.ASCII;
- SendData (ToQuotedPrintable (sr.ReadToEnd (), encoding));
+ byte [] bytes = new byte [av.ContentStream.Length];
+ av.ContentStream.Read (bytes, 0, bytes.Length);
+ SendData (ToQuotedPrintable (bytes));
break;
case TransferEncoding.SevenBit:
case TransferEncoding.Unknown:
#endif
break;
case TransferEncoding.QuotedPrintable:
- StreamReader sr = new StreamReader (lr.ContentStream);
- Encoding encoding = contentType.CharSet != null ? Encoding.GetEncoding (contentType.CharSet) : Encoding.ASCII;
- SendData (ToQuotedPrintable (sr.ReadToEnd (), encoding));
+ byte [] bytes = new byte [lr.ContentStream.Length];
+ lr.ContentStream.Read (bytes, 0, bytes.Length);
+ SendData (ToQuotedPrintable (bytes));
break;
case TransferEncoding.SevenBit:
case TransferEncoding.Unknown:
#endif
break;
case TransferEncoding.QuotedPrintable:
- StreamReader sr = new StreamReader (att.ContentStream);
- Encoding encoding = contentType.CharSet != null ? Encoding.GetEncoding (contentType.CharSet) : Encoding.ASCII;
- SendData (ToQuotedPrintable (sr.ReadToEnd (), encoding));
+ byte [] bytes = new byte [att.ContentStream.Length];
+ att.ContentStream.Read (bytes, 0, bytes.Length);
+ SendData (ToQuotedPrintable (bytes));
break;
case TransferEncoding.SevenBit:
case TransferEncoding.Unknown: