使用 System.Net.Mail 库发送的电子邮件显示中文字母

发布于 2024-12-04 19:44:27 字数 7112 浏览 0 评论 0原文

在 Gmail 中运行得非常好。

在 Hotmail 中显示以下内容:

在此处输入图像描述

我的代码中没有任何地方写过中文,而且我不需要任何中文那里有字母。

这是代码:

public static void SendVerificationEmail(string userEmail, int userId, string verificationCode)
{
    try
    {
        var fromAddress = new MailAddress("[email protected]", "GoldRemates | Atencion Al Cliente");
        var toAddress = new MailAddress(userEmail, String.Empty);
        const string fromPassword = "password";
        const string subject = "Bienvenidos!";
        const string body = @"<html>
                                <head>
                                </head>

                                <body>
                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué es mywebsite.com?</h1>
                                    <p>mywebsite.com es una página web que fue creada para ofrecer a sus usuarios, 
                                    una manera excitante y divertida de comprar productos nuevos en cajas, con una garantía 
                                    de los proveedores y descuentos que pueden llegar hasta el 90%.</p>

                                    <p>En mywebsite.com vas a poder comprar productos de diversas marcas, por precios 
                                    increíbles. Para convertirte en un ganador de nuestras subastas solo elige el producto 
                                    que deseas, da tus pujas y ¡GANA¡</p>

                                    <p>En mywebsite.com no perderás nunca. Desde el momento en el que participas en dar 
                                    las pujas, puedes utilizar este valor como descuento para la compra del producto que no 
                                    lograste arrematar.</p>

                                    <p>Ejemplo: si un producto cuesta 100 dólares y usted participa en la subasta del producto 
                                    dando sus ofertas. Después de dar 30 ofertas, es decir 30 dólares y otra persona gano el 
                                    remate usted puede utilizar esos 30 dólares como descuento para la compra del producto, 
                                    o sea de los 100 dólares solo pagaría 70.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué son y para qué sirven  los 15 créditos que obtuve por registrarme?</h1>
                                    <p>Al momento de registrarte ganaste 15 créditos que equivalen a 15 ofertas o pujas que 
                                    puedes utilizar en los remates gratuitos que ofrecerá mywebsite.com</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cuánto tiempo los créditos gratuitos son validos?</h1>
                                    <p>Estos créditos tendrán validad hasta la finalización de la feria Expocruz.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué son los remates gratuitos mywebsite.com?</h1>
                                    <p>En los remates gratuitos mywebsite.com el usuario que gana la subasta no 
                                    paga el valor de remate.</p>

                                    <p>Todos los créditos utilizados en los remates son descontados.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Puedo pujar en más de una subasta al mismo tiempo?</h1>
                                    <p>Si, si usted desea dar cuantas ofertas quiera para arrematar con los productos 
                                    de su interés lo puede hacer.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">Consejos de goldremates.com:</h1>
                                    <p>Al participar de una subasta, evitar el envió de correos electrónicos con archivos 
                                    adjuntos y descargas. Algunos programas también pueden afectar la velocidad de su conexión. 
                                    Compartir con otros usuarios de internet hacer descargas mientras está haciendo una oferta 
                                    puede hacer que sea más lento.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cómo dar mis ofertas en mywebsite.com?</h1>
                                    <p>Es muy fácil participar. Solo tiene que seguir los siguientes pasos:</p>
                                    <ol>
                                        <li>Elija una subasta</li>
                                        <li>Has tu oferta y se un ganador</li>
                                    </ol>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cuándo finaliza la subasta?</h1>
                                    <p>La subasta finaliza cuando el contador llega a cero.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¡Remate el producto!, y ahora ¿Qué hago?</h1>
                                    <p>¡Felicitaciones!  Usted recibirá un correo electrónico indicando los datos de la subasta 
                                    que gano y las instrucciones de la entrega, mywebsite.com siempre con sus clientes para 
                                    servirle mejor.</p> 

                                    <p>Gracias por registrase.</p>

                                    <p>Saludos</p>

                                    <p>GoldRemates</p>

                                    <img src=""http://mywebsite.com/images/logo.png"" alt=""Gold Remates Logo"" />

                                </body>
                            </html>";

        var smtp = new SmtpClient
        {
            Host = "my.mail.server.com",
            Port = 25,
            EnableSsl = false,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
        };
        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body,
            IsBodyHtml = true,
            BodyEncoding = Encoding.Unicode,
            SubjectEncoding = Encoding.Unicode
        })
        {
            smtp.Send(message);
        }
    }
    catch (Exception e)
    {
    }
}

Works perfectly fine in Gmail.

Shows the following in Hotmail:

enter image description here

Nowhere in my code have I written Chinese and I don't want any chinese letters there.

Here's the code:

public static void SendVerificationEmail(string userEmail, int userId, string verificationCode)
{
    try
    {
        var fromAddress = new MailAddress("[email protected]", "GoldRemates | Atencion Al Cliente");
        var toAddress = new MailAddress(userEmail, String.Empty);
        const string fromPassword = "password";
        const string subject = "Bienvenidos!";
        const string body = @"<html>
                                <head>
                                </head>

                                <body>
                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué es mywebsite.com?</h1>
                                    <p>mywebsite.com es una página web que fue creada para ofrecer a sus usuarios, 
                                    una manera excitante y divertida de comprar productos nuevos en cajas, con una garantía 
                                    de los proveedores y descuentos que pueden llegar hasta el 90%.</p>

                                    <p>En mywebsite.com vas a poder comprar productos de diversas marcas, por precios 
                                    increíbles. Para convertirte en un ganador de nuestras subastas solo elige el producto 
                                    que deseas, da tus pujas y ¡GANA¡</p>

                                    <p>En mywebsite.com no perderás nunca. Desde el momento en el que participas en dar 
                                    las pujas, puedes utilizar este valor como descuento para la compra del producto que no 
                                    lograste arrematar.</p>

                                    <p>Ejemplo: si un producto cuesta 100 dólares y usted participa en la subasta del producto 
                                    dando sus ofertas. Después de dar 30 ofertas, es decir 30 dólares y otra persona gano el 
                                    remate usted puede utilizar esos 30 dólares como descuento para la compra del producto, 
                                    o sea de los 100 dólares solo pagaría 70.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué son y para qué sirven  los 15 créditos que obtuve por registrarme?</h1>
                                    <p>Al momento de registrarte ganaste 15 créditos que equivalen a 15 ofertas o pujas que 
                                    puedes utilizar en los remates gratuitos que ofrecerá mywebsite.com</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cuánto tiempo los créditos gratuitos son validos?</h1>
                                    <p>Estos créditos tendrán validad hasta la finalización de la feria Expocruz.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Qué son los remates gratuitos mywebsite.com?</h1>
                                    <p>En los remates gratuitos mywebsite.com el usuario que gana la subasta no 
                                    paga el valor de remate.</p>

                                    <p>Todos los créditos utilizados en los remates son descontados.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Puedo pujar en más de una subasta al mismo tiempo?</h1>
                                    <p>Si, si usted desea dar cuantas ofertas quiera para arrematar con los productos 
                                    de su interés lo puede hacer.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">Consejos de goldremates.com:</h1>
                                    <p>Al participar de una subasta, evitar el envió de correos electrónicos con archivos 
                                    adjuntos y descargas. Algunos programas también pueden afectar la velocidad de su conexión. 
                                    Compartir con otros usuarios de internet hacer descargas mientras está haciendo una oferta 
                                    puede hacer que sea más lento.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cómo dar mis ofertas en mywebsite.com?</h1>
                                    <p>Es muy fácil participar. Solo tiene que seguir los siguientes pasos:</p>
                                    <ol>
                                        <li>Elija una subasta</li>
                                        <li>Has tu oferta y se un ganador</li>
                                    </ol>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¿Cuándo finaliza la subasta?</h1>
                                    <p>La subasta finaliza cuando el contador llega a cero.</p>

                                    <h1 style=""color:#E4AA00; font-family:Tahoma; font-size:16px;"">¡Remate el producto!, y ahora ¿Qué hago?</h1>
                                    <p>¡Felicitaciones!  Usted recibirá un correo electrónico indicando los datos de la subasta 
                                    que gano y las instrucciones de la entrega, mywebsite.com siempre con sus clientes para 
                                    servirle mejor.</p> 

                                    <p>Gracias por registrase.</p>

                                    <p>Saludos</p>

                                    <p>GoldRemates</p>

                                    <img src=""http://mywebsite.com/images/logo.png"" alt=""Gold Remates Logo"" />

                                </body>
                            </html>";

        var smtp = new SmtpClient
        {
            Host = "my.mail.server.com",
            Port = 25,
            EnableSsl = false,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
        };
        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body,
            IsBodyHtml = true,
            BodyEncoding = Encoding.Unicode,
            SubjectEncoding = Encoding.Unicode
        })
        {
            smtp.Send(message);
        }
    }
    catch (Exception e)
    {
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红焚 2024-12-11 19:44:27

那不是真正的中国人;那是 Unicode 出了问题。 Hotmail 未正确保留 Unicode 编码。尝试使用 UTF-8 进行编码,这将允许用户使用 Unicode 字符,但主要向后兼容无法处理 UTF-16/UTF-32 的客户端。

That's not real Chinese; that's Unicode gone wrong. Hotmail is not preserving the Unicode encoding correctly. Try encoding with UTF-8 instead, which will allow users to use Unicode characters, but will be mostly backwards-compatible with clients that can't handle UTF-16/UTF-32.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文