Skip to main content
 首页 » 编程设计

c#之使用 System.Net.Mail lib 发送的电子邮件显示中文字母

2024年02月23日34zhoujg

在 Gmail 中完美运行。

在 Hotmail 中显示以下内容:

我的代码中没有任何地方写中文,我不希望那里有任何中文字母。

代码如下:

public static void SendVerificationEmail(string userEmail, int userId, string verificationCode) 
{ 
    try 
    { 
        var fromAddress = new MailAddress("contacto@goldremates.com", "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) 
    { 
    } 
} 

请您参考如下方法:

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