zoukankan      html  css  js  c++  java
  • .NET中用SMTP发邮件的两中方法总结

    方法一

    System.Web.Mail名字空间下的SmtpMail.Send(MailMessage mail)静态方法
    这种方法最为简单,是.NET1.1中常用的方法,一般的SMTP服务都能支持。

    方法二
    System.Net.Mail名字空间下的SmtpClient.Send(MailMesasge mail)实例方法

    这是.NET2.0里推荐的方法,它更加灵活,但写起来复杂一点。像Gmail这样需要SSL安全连接认证的,方法一是不行的。


    两种方法代码示例:

    /// <summary>
        
    /// Send e-mail hepler class
        
    /// </summary>

        public sealed class EmailHelper
        
    {
            
    public static void SendWebMail(IList<string> toList, IList<string> ccList, 
                
    string subject, string body)
            
    {
                System.Web.Mail.MailMessage mail 
    = new System.Web.Mail.MailMessage();
                SmtpMail.SmtpServer 
    = SystemConfig.SmtpServer;

                
    if (toList==null || toList.Count ==0)
                
    {
                    
    throw new ArgumentNullException("toList can be null or empty.");
                }


                StringBuilder sb 
    = new StringBuilder();

                
    foreach (string s in toList)
                
    {
                    sb.Append(s);
                    sb.Append(
    ";");
                }

                mail.To 
    = sb.ToString();

                sb.Remove(
    0, sb.Length);
                
    if (ccList != null && ccList.Count != 0)
                
    {
                    
    foreach (string s in ccList)
                    
    {
                        sb.Append(s);
                        sb.Append(
    ";");
                    }

                }

                mail.Cc 
    = sb.ToString();
                
                
    //基本权限 
                mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
                    
    "1");
                
    //用户名 
                mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername"
                    SystemConfig.SenderUserId);
                
    //密码 
                mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword",
                    SystemConfig.SenderPassword);

                mail.From 
    = SystemConfig.SenderEmail;
                mail.Subject 
    = subject;
                mail.BodyFormat 
    = MailFormat.Html;
                mail.Body 
    = body;
                
                SmtpMail.Send(mail);           
            }


            
    public static void SendNetMail(IList<string> toList, IList<string> ccList,
                
    string subject, string body)
            
    {
                System.Net.Mail.MailMessage mail 
    = new System.Net.Mail.MailMessage();            

                
    if (toList == null || toList.Count == 0)
                
    {
                    
    throw new ArgumentNullException("toList can be null or empty.");
                }
            

                
    foreach (string s in toList)
                
    {
                    mail.To.Add(s);
                }


                
    if (ccList!= null && ccList.Count != 0)
                
    {
                    
    foreach (string s in ccList)
                    
    {
                        mail.CC.Add(s);
                    }

                }


                mail.From 
    = new System.Net.Mail.MailAddress(SystemConfig.SenderEmail, SystemConfig.SenderUserId,Encoding.UTF8);
                mail.Subject 
    = subject;
                mail.IsBodyHtml 
    = true;
                mail.Body 
    = body;

                SmtpClient client 
    = new SmtpClient(SystemConfig.SmtpServer, SystemConfig.SmtpPort);
                client.Credentials 
    = new System.Net.NetworkCredential(SystemConfig.SenderUserId, SystemConfig.SenderPassword);
                client.EnableSsl 
    = SystemConfig.EnableSSL;
                client.Send(mail);
            }

        }
    // <summary>
        /// Stores system config / paramerter / hardcoded values
        
    /// </summary>

        public sealed class SystemConfig
        
    {       

            
    public static string SmtpServer
            
    {
                
    get
                
    {
                    
    return ConfigurationManager.AppSettings["smtpServer"];
                }

            }


            
    public static int SmtpPort
            
    {
                
    get
                
    {
                    
    return int.Parse(ConfigurationManager.AppSettings["smtpPort"]);
                }

            }


            
    public static string SenderEmail
            
    {
                
    get
                
    {
                    
    return ConfigurationManager.AppSettings["senderEmail"];
                }

            }


            
    public static string SenderUserId
            
    {
                
    get
                
    {
                    
    return ConfigurationManager.AppSettings["senderUserId"];
                }

            }


            
    public static string SenderPassword
            
    {
                
    get
                
    {
                    
    return ConfigurationManager.AppSettings["senderPassword"];
                }

            }


            
    public static bool EnableSSL
            
    {
                
    get
                
    {
                    
    return bool.Parse(ConfigurationManager.AppSettings["EnableSSL"]);
                }

            }

        }


    web.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        
    <connectionStrings>
            
    <add name="pbcrm" connectionString="Server=192.168.2.58;Initial Catalog=P;User ID=sa;PassWord=" providerName="System.Data.SqlClient"/>
        
    </connectionStrings>

        
    <appSettings>
            
    <add key="smtpServer" value="smtp.gmail.com"/>
            
    <add key="smtpPort" value="587"/>
            
    <add key="senderEmail"  value="rockniu@gmail.com"/>
            
    <add key="senderUserId" value="rockniu"/>
            
    <add key="senderPassword" value="******"/>
            
    <add key ="EnableSSL" value="true"/>
         
    </appSettings>    
    </configuration>


    测试代码:


        [TestFixture]
        
    public class SendMailTest 
        
    {
            List
    <string> _sendTo = new List<string>(10);
            List
    <string> _copyTo = new List<string>(10);

            
    public SendMailTest()           
            
    {
                _sendTo.Add(
    "rockniu@gmail.com");
                _sendTo.Add(
    "rockniu@yahoo.cn");
                _copyTo.Add(
    "rockniu@live.com");
                _copyTo.Add(
    "rockniu@hotmail.com");
            }


            [Test]
            
    public void SendWebMail()
            
    {
                EmailHelper.SendWebMail(_sendTo, _copyTo, 
    "Rock is coming""rock123");
            }


            [Test]
            
    public void SendNetMail()
            
    {
                EmailHelper.SendNetMail(_sendTo, _copyTo, 
    "Rock is coming""rock123");
            }
          
        }
  • 相关阅读:
    - (NSString *)description
    3.30 学习笔记
    常用的 博客
    iOS 比较好的博客
    iOS查看一段代码运行的时间
    tableview 第一次可以查看tableview 当退出第二次却会出现Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
    iphone 设置全局变量的几种方法
    java操作控件加密
    关闭windows 警报提示音
    HttpServletRequest简述
  • 原文地址:https://www.cnblogs.com/rockniu/p/1106552.html
Copyright © 2011-2022 走看看