Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTML格式的邮件消息,文本格式的AlternateView无效_C#_Mailmessage - Fatal编程技术网

C# HTML格式的邮件消息,文本格式的AlternateView无效

C# HTML格式的邮件消息,文本格式的AlternateView无效,c#,mailmessage,C#,Mailmessage,有人能解释一下为什么这个代码不起作用吗 async Task Main() { using (var smtpClient = new SmtpClient(@"127.0.0.1", 25)) { smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; var from = new MailAddress(@"sender@mydomain.com"); var to = n

有人能解释一下为什么这个代码不起作用吗

async Task Main()
{
    using (var smtpClient = new SmtpClient(@"127.0.0.1", 25))
    {
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        var from = new MailAddress(@"sender@mydomain.com");
        var to = new MailAddress(@"receiver@mydomain.com");
        using (var message = new MailMessage())
        {
            message.Subject = "Email Subject";
            message.Body = "<html><head></head><body><h1>Hello World!</h1></body></html>";
            message.IsBodyHtml = true;
            message.From = from;
            message.To.Add(to);
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("Hello World!", null, MediaTypeNames.Text.Plain));
            await smtpClient.SendMailAsync(message);
        }
    }
}
async Task Main()
{
使用(var smtpClient=新的smtpClient(@“127.0.0.1”,25))
{
smtpClient.DeliveryMethod=SmtpDeliveryMethod.Network;
var from=新邮件地址(@“sender@mydomain.com");
var to=新邮件地址(@“receiver@mydomain.com");
使用(var message=new MailMessage())
{
message.Subject=“电子邮件主题”;
message.Body=“你好,世界!”;
message.IsBodyHtml=true;
message.From=From;
message.To.Add(To);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Plain));
等待smtpClient.SendMailAsync(消息);
}
}
}
输出信息为:

MIME版本:1.0,来自:sender@mydomain.com致:receiver@mydomain.com 日期:2016年5月12日14:51:30+0200主题:电子邮件主题内容类型: 多部分/备选方案; 边界=--边界_2_be88a42a-4d48-4096-b4e0-71fb7857809f

----边界_2_be88a42a-4d48-4096-b4e0-71fb7857809f内容类型:文本/普通;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界_2_be88a42a-4d48-4096-b4e0-71fb7857809f内容类型:文本/普通;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界_2_be88a42a-4d48-4096-b4e0-71fb7857809f--

此代码正在运行:

async Task Main()
{
    using (var smtpClient = new SmtpClient(@"127.0.0.1", 25))
    {
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        var from = new MailAddress(@"sender@mydomain.com");
        var to = new MailAddress(@"receiver@mydomain.com");
        using (var message = new MailMessage())
        {
            message.Subject = "Email Subject";
            message.Body = "Hello World!";
            message.IsBodyHtml = false;
            message.From = from;
            message.To.Add(to);
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("<html><head></head><body><h1>Hello World!</h1></body></html>", null, MediaTypeNames.Text.Html));
            await smtpClient.SendMailAsync(message);
        }
    }
}
async Task Main()
{
    using (var smtpClient = new SmtpClient(@"127.0.0.1", 25))
    {
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        var from = new MailAddress(@"sender@mydomain.com");
        var to = new MailAddress(@"receiver@mydomain.com");
        using (var message = new MailMessage())
        {
            message.Subject = "Email Subject";
            message.From = from;
            message.To.Add(to);
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("<html><head></head><body><h1>Hello World!</h1></body></html>", null, MediaTypeNames.Text.Html));
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("Hello World!", null, MediaTypeNames.Text.Plain));
            await smtpClient.SendMailAsync(message);
        }
    }
}
async Task Main()
{
使用(var smtpClient=新的smtpClient(@“127.0.0.1”,25))
{
smtpClient.DeliveryMethod=SmtpDeliveryMethod.Network;
var from=新邮件地址(@“sender@mydomain.com");
var to=新邮件地址(@“receiver@mydomain.com");
使用(var message=new MailMessage())
{
message.Subject=“电子邮件主题”;
message.Body=“你好,世界!”;
message.IsBodyHtml=false;
message.From=From;
message.To.Add(To);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Html));
等待smtpClient.SendMailAsync(消息);
}
}
}
产量不错

MIME版本:1.0,来自:sender@mydomain.com致:receiver@mydomain.com 日期:2016年5月12日14:46:52+0200主题:电子邮件主题内容类型: 多部分/备选方案; 边界=--边界_1_2d888597-e405-40cb-8bd4-1bfcba04fb44

----边界_1_2d888597-e405-40cb-8bd4-1bfcba04fb44内容类型:文本/普通;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界_1_2d888597-e405-40cb-8bd4-1bfcba04fb44内容类型:text/html;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界_1_2d888597-e405

-40cb-8bd4-1bfcba04fb44--

该代码正在运行:

async Task Main()
{
    using (var smtpClient = new SmtpClient(@"127.0.0.1", 25))
    {
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        var from = new MailAddress(@"sender@mydomain.com");
        var to = new MailAddress(@"receiver@mydomain.com");
        using (var message = new MailMessage())
        {
            message.Subject = "Email Subject";
            message.Body = "Hello World!";
            message.IsBodyHtml = false;
            message.From = from;
            message.To.Add(to);
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("<html><head></head><body><h1>Hello World!</h1></body></html>", null, MediaTypeNames.Text.Html));
            await smtpClient.SendMailAsync(message);
        }
    }
}
async Task Main()
{
    using (var smtpClient = new SmtpClient(@"127.0.0.1", 25))
    {
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        var from = new MailAddress(@"sender@mydomain.com");
        var to = new MailAddress(@"receiver@mydomain.com");
        using (var message = new MailMessage())
        {
            message.Subject = "Email Subject";
            message.From = from;
            message.To.Add(to);
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("<html><head></head><body><h1>Hello World!</h1></body></html>", null, MediaTypeNames.Text.Html));
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("Hello World!", null, MediaTypeNames.Text.Plain));
            await smtpClient.SendMailAsync(message);
        }
    }
}
async Task Main()
{
使用(var smtpClient=新的smtpClient(@“127.0.0.1”,25))
{
smtpClient.DeliveryMethod=SmtpDeliveryMethod.Network;
var from=新邮件地址(@“sender@mydomain.com");
var to=新邮件地址(@“receiver@mydomain.com");
使用(var message=new MailMessage())
{
message.Subject=“电子邮件主题”;
message.From=From;
message.To.Add(To);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Html));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Plain));
等待smtpClient.SendMailAsync(消息);
}
}
}
输出也很好:

MIME版本:1.0,来自:sender@mydomain.com致:receiver@mydomain.com 日期:2016年5月12日15:07:24+0200主题:电子邮件主题内容类型: 多部分/备选方案; 边界=--边界_3_fa7662d6-404a-4c86-a775-373355aa41e2

----boundary_3_fa7662d6-404a-4c86-a775-373355aa41e2内容类型:text/html;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界_3_fa7662d6-404a-4c86-a775-373355aa41e2内容类型:文本/普通;charset=美国ascii内容传输编码: 引用可打印

你好,世界! ----边界线fa7662d6-404a-4c86-a775-373355aa41e2--


编辑:有人能帮忙让html标签在输出中不被解释吗?

我昨天遇到了完全相同的问题; 由于评论中指出的MSDN阅读,以下是我的理解

发送邮件时,Body属性专用于此处所述的电子邮件文本内容

使用Body属性指定文本版本,并使用 AlternateViews集合指定具有其他MIME类型的视图

无论出于何种原因,如果在设置正文内容后添加任何AlternateView,则正文将重置为纯文本

对我来说,你的最后一个例子似乎是让事情变得更有活力的方法

message.Subject = "Email Subject";
message.From = from;
message.To.Add(to);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("<html><head></head><body><h1>Hello World!</h1></body></html>", null, MediaTypeNames.Text.Html));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("Hello World!", null, MediaTypeNames.Text.Plain));
await smtpClient.SendMailAsync(message);
message.Subject=“电子邮件主题”;
message.From=From;
message.To.Add(To);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Html));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(“helloworld!”,null,MediaTypeNames.Text.Plain));
等待smtpClient.SendMailAsync(消息);

将MediaTypeNames.Text.Plain更改为MediaTypeNames.Text.html您在这里看过吗@梅尔哈迪克为什么?如果内容是纯文本,则将其设置为纯文本。@JaggenSWE此代码与第二个代码相同