This topic has not yet been rated - Rate this topic

MailMessage.BodyEncoding Property

Gets or sets the encoding used to encode the message body.

Namespace:  System.Net.Mail
Assembly:  System (in System.dll)
public Encoding BodyEncoding { get; set; }

Property Value

Type: System.Text.Encoding
An Encoding applied to the contents of the Body.

The value specified for the BodyEncoding property sets the character set field in the Content-Type header. The default character set is "us-ascii".

If you set the BodyEncoding property to UTF8, Unicode, or UTF32, the Framework selects a TransferEncoding of Base64 for this MailMessage.

The following code example demonstrates creating a mail message that uses UTF8 encoding.


MailMessage message = new MailMessage(from, to);
message.Body = "This is a test e-mail message sent by an application. ";
// Include some non-ASCII characters in body and subject.
string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'});
message.Body += Environment.NewLine + someArrows;
message.BodyEncoding =  System.Text.Encoding.UTF8;
message.Subject = "test message 1" + someArrows;
message.SubjectEncoding = System.Text.Encoding.UTF8;


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
setting .Body automatically sets .BodyEncoding
When you set the .Body = someString, if the .BodyEncoding==null, the .BodyEncoding is automatically set to Ascii.
If the .BodyEncoding != null, it is left alone.
This happens whether .Body was original "" or not.
setting .Body automatically sets .BodyEncoding
When you set the .Body = someString, if the .BodyEncoding==null, the .BodyEncoding is automatically set to Ascii.
If the .BodyEncoding != null, it is left alone.
This happens whether .Body was original "" or not.
Reply
@Freeman:
I belive it was done because of many legacy systems not supporting much others than US-ASCII
The default character set is "us-ascii".
I don't understand why the default was not set to UTF-8...