dwdm

导航

用vs .net 2005 beta2开发简单smtp邮件程序有感

       最近工作上需要给大量邮箱发email,每封信内容还不完全一样.为了偷懒,研究了一下.net2.0的System.Net.Mail ,发现跟.net1.0版本有不同.
       要实现smtp发信太简单了,这里不再班门弄斧,只是现在的smtp服务器本来就少,还基本都需要登陆认证,太麻烦,看了一些文章用MailMessage.Field.Add方法实现登录认证,找了半天.net2.0中没有该方法.
(注:"大文"兄对登录认证的问题作了更正,为了大家阅读方便,这里直接给出正确的方法:应该用:
SmtpClient smtpClient = new SmtpClient("xxx.xxx.xxx.xxx");
smtpClient.Credentials = new NetworkCredential("account", "password");
smtpClient.Timeout = 100;
smtpClient.EnableSsl = false;
)
       要通过网上的公开smtp服务器发邮件是不可能了.(其实是可以的,只是较慢)
      于是考虑通过本地smtp服务器来群发,还是想偷懒,找了几个免费的smtp本地服务器软件.其中magic winmail4.2和musemail server2.0两个软件顺利通过测试,前者不需要作任何配置,安装完毕就可以用SmtpClient.Send方法发送邮件,记住要把Host设成本地主机127.0.0.1 .美中不足是只能30天试用期,后者需要简单的配置(勾掉"强制进行SMTP发信认证",并将SMTP绑定到127.0.0.1),但是没有时间限制.
      以下提供了关键代码.
  private bool sendMail(string add, string from,string subject,string content, string attachmentadd)
        {
            try
            {
            MailMessage message = new MailMessage(from,add);
            if (attachmentadd != "")
            {
                Attachment attachment = new Attachment(attachmentadd);
                message.Attachments.Add(attachment);
            }
            if (content != "")
            {
                message.BodyEncoding = Encoding.GetEncoding("GBK");
                message.Body = content;
            }
            if (subject != "")
            {
                message.Subject = subject;
            }
            SmtpClient sc = new SmtpClient("127.0.0.1",25);       
            sc.Send(message);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return false;
            }
            return true;

        }
    

       软件编出来后遇到了一个问题,就是中文主题再一些邮箱(如eyou)中显示为乱码,且无法通过设置Encoding来解决.还有一些邮箱发送后无法收到(qianlong,tom)各位大侠帮帮忙,看看有没有办法解决.

posted on 2005-09-24 21:37  dwdm  阅读(3053)  评论(12编辑  收藏  举报