4imble
4imble

Reputation: 14416

Sending an email to outlook with emoji characters using C#

I have a user input on a web page. They are able to type a message and send.

The message gets sent to them via SMTP and the client they'll be using is outlook.

The problem I am getting is that emoji [😂🐱‍👓🤷‍♂️👍] are coming through as varying amount of ?? question marks.

There's also a number of problematic characters that come through when they paste content from work like special quotes and the em dash which is often substituted in word when people type a dash.

I know outlook supports emoji as I can type them in with Windows + ; and send them fine. But this is getting mangled somehow when I send it through the SMTP client.

Debugging is showing the emoji correctly before sending it through the SMTP client.

Any ideas what I need to do to get it to send without resorting to stripping these characters out? I'd like for people to be able to use these emoji if they like.

Upvotes: 1

Views: 1881

Answers (1)

4imble
4imble

Reputation: 14416

Thanks to @Steve for making me reconsider the obvious 🙌

Turns out all I needed to do was set the BodyEncoding to System.Text.Encoding.UTF8 on the message. Setting the IsBodyHtml property to true was not enough.

Not sure what the default is for this to not work without setting it to UTF8 but oh well.

mail.BodyEncoding = System.Text.Encoding.UTF8;

https://learn.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage.bodyencoding

Upvotes: 2

Related Questions