zoukankan      html  css  js  c++  java
  • C# 如何通过mailto标签和SMTP协议两种方式发送邮件

      本文主要讲解如何通过如现mailto标签和SMTP协议两种方式发送邮件,下面就直入主题

    方法一、通过mailto标签发送邮件

      通过mailto不是正真意义上的发送邮件,它只是会自动调用我们本地默认的邮件服务软件(这取决于我们本地安装了什么邮件软件,outlook,firemail等等),发送还是需要我们自己点击发送才能完成。

      mailto标签有很多实用的方法,比如:加入邮件的默认主题、抄送地址、暗送(密件抄送)地址,邮件内容等待.....

    1、为邮件加入发件人

      格式:mailto:发件人地址

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
     7         {
     8             string message = string.Format("mailto:{0}", sendFrom);
     9             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    10         }

    2、为邮件加入默认标题

      格式:mailto:发件人地址?subject=邮件主题

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人 
     3         /// subjetc:主题
     4         /// </summary>
     5         /// <param name="sender"></param>
     6         /// <param name="e"></param>
     7         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
     8         {
     9             string message = string.Format("mailto:{0}?subject={1}", sendFrom, subjetc);
    10             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    11         }

    3、为邮件加入默认的抄送地址

         格式:mailto:发件人地址?cc=抄送地址

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人 
     3         /// sendCC:抄送地址
     4         /// </summary>
     5         /// <param name="sender"></param>
     6         /// <param name="e"></param>
     7         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
     8         {
     9             string message = string.Format("mailto:{0}?cc={1}", sendFrom, sendCC);
    10             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    11         }

    4、为邮件加入默认暗送(密件抄送)地址

         格式:mailto:发件人地址?bcc=密送地址

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人 
     3         /// sendBCC:密送地址
     4         /// </summary>
     5         /// <param name="sender"></param>
     6         /// <param name="e"></param>
     7         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
     8         {
     9             string message = string.Format("mailto:{0}?bcc={1}", sendFrom, sendBCC);
    10             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    11         }

    5、为邮件加入默认的内容

         格式:mailto:发件人地址?body=邮件内容

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人 
     3         /// content:邮件内容
     4         /// </summary>
     5         /// <param name="sender"></param>
     6         /// <param name="e"></param>
     7         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
     8         {
     9             string message = string.Format("mailto:{0}?body={1}", sendFrom, content);
    10             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    11         }

    6、多个邮件地址

         格式:mailto:发件人地址1,发件地址2,发件地址3(以逗号分隔)

    7、综合型的:加入默认抄送地址,标题,内容

         格式:mailto:发件人地址1,发件人地址2?cc=抄送地址&bcc=密送地址&subject=主题&body=邮件内容

      代码示例

     1         /// <summary>
     2         /// sendFrom:发件人 
     3         /// sendCC:抄送 
     4         /// subjetc:密送 
     5         /// subjetc:主题 
     6         /// content:邮件内容
     7         /// </summary>
     8         /// <param name="sender"></param>
     9         /// <param name="e"></param>
    10         private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e)
    11         {
    12             string message = string.Format("mailto:{0}?cc={1}&bcc={2}&subject={3}&body={4}", sendFrom, sendCC,
    13                                             sendBCC, subjetc, content);
    14             System.Diagnostics.Process.Start(message);//调用进程启动邮件
    15         }

    如图所示:

    方法二、通过SMTP协议发送邮件

    核心代码:

     1         /// <summary>
     2         /// 发送邮件
     3         /// </summary>
     4         /// <param name="userEmailAddress">发件人地址</param>
     5         /// <param name="userName">发件人姓名(可为空)</param>
     6         /// <param name="password">密码</param>
     7         /// <param name="host">邮件服务器地址</param>
     8         /// <param name="port"></param>
     9         /// <param name="sendToList">收件人(多个电子邮件地址之间必须用逗号字符(“,”)分隔)</param>
    10         /// <param name="sendCCList">抄送人(多个电子邮件地址之间必须用逗号字符(“,”)分隔)</param>
    11         /// <param name="subject">主题</param>
    12         /// <param name="body">内容</param>
    13         /// <param name="attachmentsPath">附件路径</param>
    14         /// <param name="errorMessage">错误信息</param>
    15         public static bool SendMessage(string userEmailAddress, string userName, string password, string host, int port,
    16             string[] sendToList, string[] sendCCList, string subject, string body, string[] attachmentsPath, out string errorMessage)
    17         {
    18             errorMessage = string.Empty;
    19             SmtpClient client = new SmtpClient();
    20             client.Credentials = new System.Net.NetworkCredential(userEmailAddress, password);//用户名、密码
    21             client.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式    
    22             client.Host = host;//邮件服务器
    23             client.Port = port;//端口号 非SSL方式,默认端口号为:25
    24             client.UseDefaultCredentials = true;
    25 
    26             MailMessage msg = new MailMessage();
    27             //加发件人
    28             foreach (string send in sendToList)
    29             {
    30                 msg.To.Add(send);
    31             }
    32             //加抄送
    33             foreach (string cc in sendCCList)
    34             {
    35                 msg.To.Add(cc);
    36             }
    37 
    38             //在有附件的情况下添加附件
    39             if (attachmentsPath != null && attachmentsPath.Length > 0)
    40             {
    41                 foreach (string path in attachmentsPath)
    42                 {
    43                     var attachFile = new Attachment(path);
    44                     msg.Attachments.Add(attachFile);
    45                 }
    46             }
    47             msg.From = new MailAddress(userEmailAddress, userName);//发件人地址
    48             msg.Subject = subject;//邮件标题   
    49             msg.Body = body;//邮件内容   
    50             msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码   
    51             msg.IsBodyHtml = true;//是否是HTML邮件   
    52             msg.Priority = MailPriority.High;//邮件优先级   
    53 
    54             try
    55             {
    56                 client.Send(msg);
    57                 return true;
    58             }
    59             catch (System.Net.Mail.SmtpException ex)
    60             {
    61                 errorMessage = ex.Message;
    62                 return false;
    63             }
    64         }

     如图所示:

     PS:如有疑问,请留言,未经允许,不得私自转载,转载请注明出处:http://www.cnblogs.com/xuliangxing/p/7987282.html 

  • 相关阅读:
    c# 构架WPF 纸牌游戏(斗地主2)
    超级灰色按钮克星更新v1.3.1112.40
    早期绑定、动态绑定、后期绑定
    反射、反射加壳、反射脱壳、反射注册机(上)
    c# 构架WPF 纸牌游戏(斗地主4)
    Google首页吃豆游戏完整源码下载,以及声音问题的解决
    c# 构架WPF 纸牌游戏(斗地主1)
    c# 构架WPF 纸牌游戏(斗地主3)
    反射、反射加壳、反射脱壳、反射注册机(下)
    未能加载文件或程序集一例
  • 原文地址:https://www.cnblogs.com/xuliangxing/p/7987282.html
Copyright © 2011-2022 走看看