通过上面的代码我们可以发现使用SmtpClient比SmtpExpress要复杂很多,但是SmtpClient可以提供比SmtpExpress更多功能,接下来我们就要介绍一下SmtpClient所提供的高级功能。
构建更复杂的Message对象。Message对象用于表示一个邮件的实体,它包含了邮件的头部信息、发件人,收件人,标题,内容以及附件等各种信息。。
设置多个收件人
我们继续使用上段代码做演示,message对象提供了各类接受人的集合用于表示各类不同的收件人。其中ToRecipients表示收件人集合、CcRecipients表示抄送人集合,BccRecipients表示密件抄送人抄送人集合。通过添加删除收件人集合可以方便的设置收件人、抄送人和密件抄送人。
message.CcRecipients.Add("cc@mailserver.com", "cc");
message.CcRecipients.Add("cc2@mailserver.com", "cc2");
message.BccRecipients.Add("bcc@mailserver.com");
发送HTML格式邮件
电子邮件载体是以纯文本来表现的,但是为了丰富邮件内容的表现形式,邮件的内容可以支持多种格式,比如纯文本、HTML、RichText等;而为了实现对各种区域语言以及各种二进制附件的良好支持,邮件载体又可以使用多种格式进行编码,常见的有Base64和QuotedPrintable。
为了自定义各种形式的邮件内容和编码格式,就需要在Message对象创建时使用不同的参数,如下例代码,但这对使用者提出了更高的要求,必须了解更多关于邮件格式的细节,这显然不便于开发者。因而Snake.Net提供了一种简便的方式,就是使用MessageBuilder去构建Message对象。MessageBuilder是一个超类,Snake.Net通过提供继承与MessageBuilder的HtmlMessageBuilder、AlternativeMessageBuilder来构建HTML格式和MultipartAlternative格式的Message对象。
HtmlMessageBuilder builder;
MailMessage.Message message;
//create html message builder
builder = new HtmlMessageBuilder();
builder.To = Address.Parse("to@mailserver.com");
builder.From = Address.Parse("form@mailserver.com");
builder.Subject ="subject";
builder.Body = "<html><body><p>Html Body</p></body></html>";
//create message
message = builder.ToMessage();