如果加上这篇补充博客,那么工作回顾那边博客里,第二个程序就完整的完成了,本来Excel通过邮件自动推送功能在这个项目后期被去掉了,但昨天看到邮箱里测试同学到点手动发送程序生成的EXCEL文件,我想我可以试试把推送功能写出来,花了一上午,程序跑起来后EXCEL被自动推送了,感觉还不错。
MSDN真是个神器,看别人的博客你可能知道代码是怎么写的,看MSDN你能知道为什么要这么写,不过我仍只是写表没写本,如果要知道为什么这样写就能推送出去,只能读书和看源码了。
关于Excel的导出如果想看一看的朋友请移步<最近的工作>篇幅三分一位置,有使用Microsoft.Office.Interop.Excel.DLL和NPOI实现的代码,这里就直接写关于邮件自动推送。
在C#中实现邮件推送,或者打个比喻,我们给国外的某某某寄包裹,我们要写自己的地址,收件人的地址,负责寄包裹的公司(EMS, UPS…),以及出示我们的身份信息。在代码里对应得就是邮件发送方MailAddress From, 邮件接收方 MailAddress To, 邮件收发服务器SmtpClient.Host, 身份验证SmtpClient.Credentials。
如果从思路上来讲的话,如果我们要发送一封带附件的邮件,我们要设置的只有StmpClient, MailMessage, MailMessage.Attachments,StmpClient主要是设置收发服务器,验证,发送方式等信息, MailMessage是设置我们要发送的消息,接收人,抄送人,附件等信息, MailMessage.Attachments是用来保存要发送的附件的,需要用到Attachment,通过Attachment可以设置发送文件以及文件的编码格式,ContentType.MediaType 即是设置附件的内容格式的,其值由MediaTypeNames表示,附件编码格式的指定方式有两种:
//// 通过构造函数
Attachment attachMent = new Attachment(path, MediaTypeNames.Application.Pdf);
对MediaType 进行指定。(因为是引用类型因此对content指向对象的改变也会反映到指向这个对象的data.ContentType上)
Attachment data = new Attachment(textMessage);
ContentType content = data.ContentType;
content.MediaType = MediaTypeNames.Text.Plain;
上面举的例子里提到了出示我们的身份信息,所以我们需要设置验证信息,即出示我们身份,表明这封邮件确实我”本人”发出的,这点可以用StmpCl