zoukankan      html  css  js  c++  java
  • C#实现邮件发送的功能

     

     Ø  发送邮件所用的核心知识点

    •   微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
    •   微软封装好的SmtpClient类:主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
    •   SmtpClient主要进行了三层的封装:Socket --> TcpClient --> SmtpClient

    Ø  具体代码请看如下所示:

     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Mail;
    using System.Net.Mime;
    using System.IO;
    using System.Timers;
    using System.Xml;

    namespace MyEmailTest
    {
       class Program
    {
         staticvoid Main(string[] args)
    {
           try
    {

            string senderServerIp = "123.125.50.133";
            string toMailAddress = "mingmingruyuedlut@163.com";
            string fromMailAddress = "mingmingruyuedlut@163.com";
            string subjectInfo = "Test sending e_mail";
            string bodyInfo = "Hello Eric, This is my first testing e_mail";
            string mailUsername = "mingmingruyuedlut";
            string mailPassword = ".........."; //发送邮箱的密码()
            string mailPort = "25";
            string attachPath = "E:\123123.txt; E:\haha.pdf";

    MyEmail email = new MyEmail(senderServerIp, toMailAddress, fromMailAddress, subjectInfo, bodyInfo, mailUsername, mailPassword, mailPort, false, false);
    email.AddAttachments(attachPath);
    email.Send();
    }
           catch (Exception ex)
    {
    Console.WriteLine(ex.ToString());
    }
    }
    }

    publicclass MyEmail
    {
          private MailMessage mMailMessage; //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
          private SmtpClient mSmtpClient; //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
          private int mSenderPort; //发送邮件所用的端口号(htmp协议默认为25)
          private string mSenderServerHost; //发件箱的邮件服务器地址(IP形式或字符串形式均可)
          private string mSenderPassword; //发件箱的密码
          private string mSenderUsername; //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
          private bool mEnableSsl; //是否对邮件内容进行socket层加密传输
          private bool mEnablePwdAuthentication; //是否对发件人邮箱进行密码验证

    ///<summary>
    /// 构造函数
    ///</summary>
    ///<param name="server">发件箱的邮件服务器地址</param>
    ///<param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
    ///<param name="fromMail">发件人地址</param>
    ///<param name="subject">邮件标题</param>
    ///<param name="emailBody">邮件内容(可以以html格式进行设计)</param>
    ///<param name="username">发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)</param>
    ///<param name="password">发件人邮箱密码</param>
    ///<param name="port">发送邮件所用的端口号(htmp协议默认为25)</param>
    ///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
    ///<param name="pwdCheckEnable">true表示对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>
        public MyEmail(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port, bool sslEnable, bool pwdCheckEnable)
    {
          try
    {
    mMailMessage = new MailMessage();
    mMailMessage.To.Add(toMail);
    mMailMessage.From = new MailAddress(fromMail);
    mMailMessage.Subject = subject;
    mMailMessage.Body = emailBody;
    mMailMessage.IsBodyHtml = true;
    mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
    mMailMessage.Priority = MailPriority.Normal;

              this.mSenderServerHost = server;
              this.mSenderUsername = username;
              this.mSenderPassword = password;
              this.mSenderPort = Convert.ToInt32(port);
              this.mEnableSsl = sslEnable;
              this.mEnablePwdAuthentication = pwdCheckEnable;
    }
            catch (Exception ex)
    {
    Console.WriteLine(ex.ToString());
    }
    }

    ///<summary>
    /// 添加附件
    ///</summary>
    ///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>
    publicvoid AddAttachments(string attachmentsPath)
    {
          try
    {
            string[] path = attachmentsPath.Split(';'); //以什么符号分隔可以自定义
    Attachment data;
    ContentDisposition disposition;
              for (int i = 0; i < path.Length; i++)
    {
    data = new Attachment(path[i], MediaTypeNames.Application.Octet);
    disposition = data.ContentDisposition;
    disposition.CreationDate = File.GetCreationTime(path[i]);
    disposition.ModificationDate = File.GetLastWriteTime(path[i]);
    disposition.ReadDate = File.GetLastAccessTime(path[i]);
    mMailMessage.Attachments.Add(data);
    }
    }
            catch (Exception ex)
    {
    Console.WriteLine(ex.ToString());
    }
    }

    ///<summary>
    /// 邮件的发送
    ///</summary>
          publicvoid Send()
    {
           try
    {
              if (mMailMessage != null)
    {
    mSmtpClient = new SmtpClient();
                //mSmtpClient.Host = "smtp." + mMailMessage.From.Host;
    mSmtpClient.Host = this.mSenderServerHost;
    mSmtpClient.Port = this.mSenderPort;
    mSmtpClient.UseDefaultCredentials = false;
    mSmtpClient.EnableSsl = this.mEnableSsl;
                if (this.mEnablePwdAuthentication)
    {
    System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
                  //mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
                  //NTLM: Secure Password Authentication in Microsoft Outlook Express
    mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");
    }
                else
    {
    mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
    }
    mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
    mSmtpClient.Send(mMailMessage);
    }
    }
            catch (Exception ex)
    {
    Console.WriteLine(ex.ToString());
    }
    }
    }
    }
  • 相关阅读:
    macbook 无声音解决方案
    webapck dev server代理请求 json截断问题
    百度卫星地图开启
    服务器 nginx配置 防止其他域名绑定自己的服务器
    记一次nginx php配置的心路历程
    遇到npm报错read ECONNRESET怎么办
    运行svn tortoiseSvn cleanup 命令失败的解决办法
    svn add 命令 递归目录下所有文件
    m4出现Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
    Ubuntu下安装GCC,mpc、mpfr、gmp
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243700.html
Copyright © 2011-2022 走看看