因为硬盘损坏和换工作两个原因,我曾经写过的绝大多数代码都丢失了。这是件让我感觉很遗憾的事情,软件开发的高效率是建立在重用基础上的,代码丢失无疑是对重用的一个绝大打击,以前封装好的功能现在统统需要重新来过,我的工作效率一下子下降了不知多少倍,某种意义上讲,我从此踏上一个新的程序开发征程。此刻,为我的代码们默哀,为我新的程序生涯祈愿!愿我将来在技术的领域中能走得更远。

今天写一个C#发送邮件的功能,由于不想花太多时间,我打算从同事的代码中移植一份过来。拿到同事的程序后心里不禁一动。那段代码中有一行我熟悉的文字,而这段文字是我两年以前写的,而且从命名风格和程序结构的风格来看这个程序确实是我当年所写。两年前我是一个入行不久的新人,喜欢把工作中新学会的东西和通用性强的代码贴在blog上。没想到那时的代码通过互联网传播到彼时我完全不认识的一个人——此时我的同事这里。是应该感叹我们的缘分还是互联网的传播能力呢!

 

今天我对代码进行了一些改造,拿出来共享,兴许对某些人有所帮助。

 

注意:126的邮箱只支持老账号发送,新申请的账号用此程序不能发送


 Mail
{
  
    /// <summary> 
    
/// 发送邮件 For Ex:Mail.Send("zhaoyao@126.com", new string[] { "zhaoyao@126.com", "zyip@qq.com" }, "test attment and mutile receive", false, "body", "mail.126.com", null, null, new string[] { "c:\\sp.txt", "c:\\sp.txt" })
    
/// </summary> 
    
/// <param name="from">发送人邮件地址</param> 
    
/// <param name="to">接收人邮件地址列表</param> 
    
/// <param name="subject">邮件主题</param> 
    
/// <param name="isBodyHtml">是否是Html</param> 
    
/// <param name="body">邮件体</param> 
    
/// <param name="smtpHost">SMTP服务器地址,例如:smtp.163.com</param> 
    
/// <param name="userName">用户名,不需要身份验证时使用null</param> 
    
/// <param name="password">密码,不需要身份验证时使用null</param> 
    
/// <param name="attachments">附件地址列表</param> 
    
/// <returns>是否成功</returns> 
    public static bool Send(string from, string[] to, string subject, bool isBodyHtml, string body, string smtpHost, string userName, string password, string[] attachments)
    {
        
bool isSuccess = true;
        
try
        {
            MailMessage mm 
= new MailMessage();
            mm.From 
= new MailAddress(from);
            
for (int i = 0; i < to.Length; i++)
            {
                mm.To.Add(
new MailAddress(to[i]));
            }
            mm.Subject 
= subject;
            mm.IsBodyHtml 
= isBodyHtml;
            mm.Body 
= body;
            
#region 附件
            
if (attachments!=null)
            {
                
for (int i = 0; i < attachments.Length; i++)
                {
                    
if (System.IO.File.Exists(attachments[i]))
                    {
                        Attachment a 
= new Attachment(attachments[i]);
                        mm.Attachments.Add(a);
                    }
                }
            }
            
#endregion
            SmtpClient sc 
= new SmtpClient(smtpHost);
            sc.Host 
= smtpHost;
            sc.UseDefaultCredentials 
= false;
            
//smtpClient.EnableSsl = true;//如果服务器不支持ssl则报,服务器不支持安全连接 错误 
            if (!(string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(password)))
            {
                sc.UseDefaultCredentials 
= true;//winform中不受影响,asp.net中,false表示不发送身份严正信息 
                sc.Credentials = new System.Net.NetworkCredential(userName, password);
            }
            sc.Send(mm);
            mm.Dispose();
            sc 
= null;
            mm 
= null;
        }
        
catch
        {
            isSuccess 
= false;
        }

        
return isSuccess;
    }
}

为方便多语言混合使用我编译了一个bin文件,如果vb.net或者c++。net使用的话可以直接引用bin文件,当然也可以翻译代码到目标语言

bin source /Files/zyip/jmail.rar

 

 

使用jmail

下载jmail

注册jmail.dll 发布时需要这一部

在项目中加入jmail.dll的引用

 

    }

相关文章:

  • 2021-06-07
  • 2021-11-28
  • 2022-12-23
  • 2021-09-07
  • 2021-08-21
  • 2021-11-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-22
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
相关资源
相似解决方案