C#发送HTML和文本电子邮件-最优雅?发送HTML和文本电子邮件是最佳做法吗?如果我只发送HTML会有什么危险?我正在考虑类似以下内容http://johnnycoder.com/blog/2009/04/15/net-mailmessage-linkedresources-alternateviews-and-exceptions/try{//分配发件人、收件人和新主题邮件消息MailAddresssender=newMailAddress("sender@johnnycoder.com","Sender");MailAddressrecipient=newMailAddress("recipient@johnnycoder.com","Recipient");MailMessagem=newMailMessage(发件人,收件人);m.Subject="测试消息";//定义纯文本替代视图并添加到消息字符串plainTextBody="YoumustuseanemailclientthatsupportsHTMLmessages";AlternateViewplainTextView=AlternateView.CreateAlternateViewFromString(plainTextBody,null,MediaTypeNames.Text.Plain);m.AlternateViews.Add(plainTextView);//定义带有嵌入图像的html备用视图并//添加到消息中。引用作为链接附加的图像//r从您的HTML邮件正文中获取资源,在标记中使用“cid:contentID”//...stringhtmlBody="Picture"+"";AlternateViewhtmlView=AlternateView.CreateAlternateViewFromString(htmlBody,null,MediaTypeNames.Text.Html);//...然后定义与图像标记中找到的//ContentID属性匹配的实际LinkedResource。在这种情况下,//HTML消息包含标记//和以下//LinkedResource.ContentId设置为“SampleImage”LinkedResourcesampleImage=newLinkedResource("sample.jpg",MediaTypeNames.Image.Jpeg);sampleImage.ContentId="样本图片";htmlView.LinkedResources.Add(sampleImage);m.AlternateViews.Add(htmlView);//最后,配置smtp或者使用//system.netmailSettingsSmtpClientsmtp=newSmtpClient{Host="smtp.example.com",UseDefaultCredentials=false,Credentials=newNetworkCredential("username","password")};//////////////smtp.Send(m);}赶上(ArgumentException){thrownewArgumentException("未定义的发件人和/或收件人。");}catch(FormatException){thrownewFormatException("无效的发件人和/或收件人。");}catch(InvalidOperationException){thrownewInvalidOperationException("未定义的SMTP服务器。");}catch(SmtpFailedRecipientException){thrownewSmtpFailedRecipientException("邮件服务器说没有收件人邮箱");}catch(SmtpExceptionex){//无效主机名导致WebExceptionInnerException//提供更具描述性的错误,因此获取基本异常Exceptioninner=ex.GetBaseException();thrownewSmtpException("无法发送消息:"+inner.Message);我要说的是,在当今世界,“最佳实践”方法是确保您以纯文本和HTML格式发送消息(如果您确实发送HTML电子邮件消息)哦,并确保您实际上以纯文本视图而不是说“您必须为HTML消息使用支持电子邮件客户端”。GoogleMail就是这样做的,它似乎完美无缺地工作,允许在成熟的PC客户端上显示“丰富”视图,同时还允许在更受限的设备(即移动/电话)上显示“最小化”视图。如果你想要一个纯粹主义者的观点,你根本不会发送HTML电子邮件,你也不会将二进制文件“附加”到电子邮件中。打破两个原始的电子邮件标准,最初只针对纯文本。(在这里和这里看看有些人对此有何评论)然而,在务实的现代现实世界中,HTML电子邮件是非常真实且完全可以接受的。发送HTML电子邮件的主要缺点是收件人是否会按照您希望他们看到的方式查看电子邮件。这与网页设计师多年来一直在努力解决的问题非常相似。让他们的网站在所有可能的浏览器中看起来“恰到好处”(尽管今天比许多年前容易得多)。类似于确保您的网站在没有Javascript的情况下工作,通过以HTML和纯文本格式发送电子邮件,您将确保您的电子邮件优雅地降级,以便人们在(比如)小型移动设备上阅读他们的电子邮件(这些东西变得越来越流行这些天-可能会或可能不会呈现完整的HTML电子邮件-并且仍然可以阅读电子邮件的内容。如果你只发送HTML,然后在纯文本设备上阅读它任何有电子邮件的人都有问题。例如,我怀疑很多低端移动设备能够阅读电子邮件但不能显示完整的HTML。我会说最好的做法是发送纯文本,文本和HTML。我不明白你为什么要抓住一堆exceptions只是为了用不同的消息重新抛出相同的异常类型,顺便说一下-原始消息可能更具描述性。同时发送两者的另一个原因是许多邮件服务器只会有带有HTML内容的电子邮件邮件被标记为垃圾邮件。您不希望所有电子邮件都在垃圾文件夹中。我想是的,最好的做法是同时发送。原因(来自维基百科的c&p):根据RFC2822的默认电子邮件格式是纯文本。因此,不需要任何电子邮件软件来支持HTML格式。因此,如果发送HTML格式的电子邮件是不支持它的客户端之一,则可能会在收件人端造成问题。在最坏的情况下,收件人将看到HTML代码而不是预期的消息。多个电子邮件客户端将使用最后添加到AlternateViews的AlternateView。因此,如果您希望您的邮件显示为HTML,请务必添加。我注意到IOSMail和OSXMail的这一点,而Android电子邮件似乎更喜欢HTML(如果可用)。我不确定它有哪些版本,并且行为通常是用户可配置的,但根据我的经验,这些是默认值。分享我在一封电子邮件中发送HTML和文本的经验:我使用C#AlternateView类创建了一封包含2个视图的电子邮件:文本和html。我在Mac上得到了什么,在HighSierra上测试过:AppleMail应用程序显示Html.如果消息顺序颠倒:Html-Text那么AppleMail将显示文本视图。结论:AppleMail默认使用之前的视图。在Windows、Outlook2010中:MicrosoftOutlook默认使用Html视图。电子邮件中视图的顺序无关紧要:html、文本;文本,HTML;如果出于某种原因您选择了将收到的邮件显示为文本的设置,则您的电子邮件的Html版本将被Outlook转换为文本。即使那样,您发送的电子邮件的文本版本(可能与HTML版本略有不同,并且格式很漂亮)也不会被使用。因此,如果您知道客户端使用Outlook并且默认选择Html版本,则无需发送电子邮件的文本版本。MozillaThunderbird尊重您的设置并显示您电子邮件的正确Html或文本版本。在Mac和Windows上都能正常运行希望对你有帮助以上是C#学习教程:C#发送HTML和文本邮件——最优雅?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
