コード例 #1
0
        /// <summary>
        /// 电子邮件[E-Mail]发送事件
        /// </summary>
        /// <param name="mailMessage">电子邮件[E-Mail]正文信息</param>
        /// <returns>邮件发送结果</returns>
        public bool Send(EMailMessage mailMessage)
        {
            if (string.IsNullOrEmpty(SMTPServer) || SMTPPort <= 0 || string.IsNullOrEmpty(SMTPUserName) || string.IsNullOrEmpty(SMTPPassword))
            {
                ErrorMessage = "邮件服务器地址、端口号、用户名、密码有空值或填写不正确。";
                return(false);
            }
            bool result = FEMailHelper.SendEmail(SMTPServer, SMTPPort, SMTPUserName, SMTPPassword, mailMessage);

            ErrorMessage = result ? string.Empty : FEMailHelper.ErrorMessage;
            return(result);
        }
コード例 #2
0
 /// <summary>
 /// 发送电子邮件
 /// <para>SMTP服务器需要身份验证</para>
 /// </summary>
 /// <param name="smtpServer">发信SMTP服务器</param>
 /// <param name="smtpPort">端口,默认为25</param>
 /// <param name="userName">发信人邮箱地址</param>
 /// <param name="password">发信人邮箱密码</param>
 /// <param name="mailMessage">邮件内容</param>
 public bool SendEmail(string smtpServer, int smtpPort, string userName, string password, EMailMessage mailMessage)
 {
     return(SendEmail(smtpServer, smtpPort, true, userName, password, mailMessage));
 }
コード例 #3
0
 /// <summary>
 /// 发送电子邮件
 /// <para>SMTP服务器不需要身份验证</para>
 /// </summary>
 /// <param name="smtpServer">发信SMTP服务器</param>
 /// <param name="smtpPort">端口,默认为25</param>
 /// <param name="mailMessage">邮件内容</param>
 public bool SendEmail(string smtpServer, int smtpPort, EMailMessage mailMessage)
 {
     return(SendEmail(smtpServer, smtpPort, false, "", "", mailMessage));
 }
コード例 #4
0
        /// <summary>
        /// 发送电子邮件
        /// </summary>
        /// <param name="smtpServer">发信SMTP服务器</param>
        /// <param name="smtpPort">端口,默认为25</param>
        /// <param name="smtpCheck">是否进行SMTP验证</param>
        /// <param name="userName">发信人邮箱地址</param>
        /// <param name="password">发信人邮箱密码</param>
        /// <param name="mailMessage">邮件内容</param>
        /// <returns>电子邮件发送结果</returns>
        private bool SendEmail(string smtpServer, int smtpPort, bool smtpCheck, string userName, string password, EMailMessage mailMessage)
        {
            bool _connResult = Connect(smtpServer, smtpPort);

            if (!_connResult)
            {
                return(false);
            }
            string _priority = GetPriorityString(mailMessage.Priority);
            bool   _htmlFlag = (mailMessage.BodyFormat == EMailFormat.HTML);

            string[]      _sendBuffer;
            StringBuilder _sendString = new StringBuilder();

            //进行SMTP验证
            if (smtpCheck)
            {
                _sendBuffer    = new String[4];
                _sendBuffer[0] = string.Format("EHLO {0}{1}", smtpServer, CRLF);
                _sendBuffer[1] = string.Format("AUTH LOGIN{0}", CRLF);
                _sendBuffer[2] = string.Format("{0}{1}", Base64Encode(userName), CRLF);
                _sendBuffer[3] = string.Format("{0}{1}", Base64Encode(password), CRLF);
                bool _tmpResult = DialogEx(_sendBuffer, "SMTP服务器验证失败,请核对用户名和密码。");
                if (!_tmpResult)
                {
                    return(false);
                }
            }
            else
            {
                _sendString.Length = 0;                 //重置
                _sendString.Append("HELO ");
                _sendString.Append(smtpServer);
                _sendString.Append(CRLF);
                bool _tmpResult = DialogEx(_sendString.ToString(), null);
                if (!_tmpResult)
                {
                    return(false);
                }
            }
            //发件人地址
            _sendString.Length = 0;             //重置
            _sendString.Append("MAIL FROM:<");
            _sendString.Append(userName);
            _sendString.Append(">");
            _sendString.Append(CRLF);
            bool _exResult = DialogEx(_sendString.ToString(), "发件人地址错误,或不能为空");

            if (!_exResult)
            {
                return(false);
            }
            //收件人地址
            _sendBuffer = new string[mailMessage.Recipients.Count];
            for (int i = 0; i < mailMessage.Recipients.Count; i++)
            {
                _sendBuffer[i] = string.Format("RCPT TO:<{0}>{1}", mailMessage.Recipients[i] as string, CRLF);
            }
            _exResult = DialogEx(_sendBuffer, "收件人地址有误");
            if (!_exResult)
            {
                return(false);
            }
            _sendString.Length = 0;             //重置
            _sendString.Append("DATA");
            _sendString.Append(CRLF);
            _exResult = DialogEx(_sendString.ToString(), null);
            if (!_exResult)
            {
                return(false);
            }
            //发件人姓名
            _sendString.Length = 0;             //重置
            _sendString.Append("From:");
            _sendString.Append(mailMessage.FromName);
            _sendString.Append("<");
            _sendString.Append(mailMessage.From);
            _sendString.Append(">");
            _sendString.Append(CRLF);
            if (mailMessage.Recipients.Count == 0)
            {
                return(false);
            }
            else
            {
                _sendString.Append("To:=?");
                _sendString.Append(mailMessage.Charset.ToUpper());
                _sendString.Append("?B?");
                _sendString.Append(Base64Encode(mailMessage.Recipients[0] as string));
                _sendString.Append("?=");
                _sendString.Append("<");
                _sendString.Append(mailMessage.Recipients[0] as string);
                _sendString.Append(">");
                _sendString.Append(CRLF);
            }
            string _tmpString = null;

            if (string.IsNullOrEmpty(mailMessage.Subject))
            {
                _tmpString = "Subject:";
            }
            else if (string.IsNullOrEmpty(mailMessage.Charset))
            {
                _tmpString = string.Format("Subject:{0}", mailMessage.Subject);
            }
            else
            {
                _tmpString = string.Format("Subject:=?{0}?B?{1}?=", mailMessage.Charset.ToUpper(), Base64Encode(mailMessage.Subject));
            }
            _sendString.Append(_tmpString);
            _sendString.Append(CRLF);
            _sendString.Append("X-Priority:");
            _sendString.Append(_priority);
            _sendString.Append(CRLF);
            _sendString.Append("X-MSMail-Priority:");
            _sendString.Append(_priority);
            _sendString.Append(CRLF);
            _sendString.Append("Importance:");
            _sendString.Append(_priority);
            _sendString.Append(CRLF);
            _sendString.Append("X-Mailer: DawnXZ.NuclearUtility.EMailOperation Pubclass [cn]");
            _sendString.Append(CRLF);
            _sendString.Append("MIME-Version: 1.0");
            _sendString.Append(CRLF);
            if (mailMessage.Attachments.Count > 0)
            {
                _sendString.Append("Content-Type: multipart/mixed;");
                _sendString.Append(CRLF);
                _sendString.Append(" boundary=\"=====");
                if (_htmlFlag)
                {
                    _sendString.Append("001_Dragon520636771063_");
                }
                else
                {
                    _sendString.Append("001_Dragon303406132050_");
                }
                _sendString.Append("=====\"");
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
            }
            if (_htmlFlag)
            {
                if (mailMessage.Attachments.Count > 0)
                {
                    _sendString.Append("Content-Type: multipart/alternative;");                     //内容格式和分隔符
                    _sendString.Append(CRLF);
                    _sendString.Append(" boundary=\"=====003_Dragon520636771063_=====\"");
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                    _sendString.Append("This is a multi-part message in MIME format.");
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                }
                else
                {
                    _sendString.Append("This is a multi-part message in MIME format.");
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                    _sendString.Append("--=====001_Dragon520636771063_=====");
                    _sendString.Append(CRLF);
                    _sendString.Append("Content-Type: multipart/alternative;");                     //内容格式和分隔符
                    _sendString.Append(CRLF);
                    _sendString.Append(" boundary=\"=====003_Dragon520636771063_=====\"");
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                }
                _sendString.Append("--=====003_Dragon520636771063_=====");
                _sendString.Append(CRLF);
                _sendString.Append("Content-Type: text/plain;");
                _sendString.Append(CRLF);
                if (string.IsNullOrEmpty(mailMessage.Charset))
                {
                    _sendString.Append(" charset=\"iso-8859-1\"");
                }
                else
                {
                    _sendString.Append(" charset=\"");
                    _sendString.Append(mailMessage.Charset.ToLower());
                    _sendString.Append("\"");
                }
                _sendString.Append(CRLF);
                _sendString.Append("Content-Transfer-Encoding: base64");
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
                _sendString.Append(Base64Encode("邮件内容为HTML格式,请选择HTML方式查看"));
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
                _sendString.Append("--=====003_Dragon520636771063_=====");
                _sendString.Append(CRLF);
                _sendString.Append("Content-Type: text/html;");
                _sendString.Append(CRLF);
                if (string.IsNullOrEmpty(mailMessage.Charset))
                {
                    _sendString.Append(" charset=\"iso-8859-1\"");
                }
                else
                {
                    _sendString.Append(" charset=\"");
                    _sendString.Append(mailMessage.Charset.ToLower());
                    _sendString.Append(CRLF);
                }
                _sendString.Append("Content-Transfer-Encoding: base64");
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
                _sendString.Append(Base64Encode(mailMessage.Body));
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
                _sendString.Append("--=====003_Dragon520636771063_=====--");
                _sendString.Append(CRLF);
            }
            else
            {
                if (mailMessage.Attachments.Count > 0)
                {
                    _sendString.Append("--=====001_Dragon303406132050_=====");
                    _sendString.Append(CRLF);
                }
                _sendString.Append("Content-Type: text/plain;");
                _sendString.Append(CRLF);
                if (string.IsNullOrEmpty(mailMessage.Charset))
                {
                    _sendString.Append(" charset=\"iso-8859-1\"");
                }
                else
                {
                    _sendString.Append(" charset=\"");
                    _sendString.Append(mailMessage.Charset.ToLower());
                    _sendString.Append("\"");
                }
                _sendString.Append(CRLF);
                _sendString.Append("Content-Transfer-Encoding: base64");
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
                _sendString.Append(Base64Encode(mailMessage.Body));
                _sendString.Append(CRLF);
            }
            if (mailMessage.Attachments.Count > 0)
            {
                for (int i = 0; i < mailMessage.Attachments.Count; i++)
                {
                    string _filePath = mailMessage.Attachments[i] as string;
                    _sendString.Append("--=====");
                    if (_htmlFlag)
                    {
                        _sendString.Append("001_Dragon520636771063_");
                    }
                    else
                    {
                        _sendString.Append("001_Dragon303406132050_");
                    }
                    _sendString.Append("=====");
                    _sendString.Append(CRLF);
                    _sendString.Append("Content-Type: text/plain;");
                    _sendString.Append(CRLF);
                    _sendString.Append(" name=\"=?");
                    _sendString.Append(mailMessage.Charset.ToUpper());
                    _sendString.Append("?B?");
                    _sendString.Append(Base64Encode(_filePath.Substring(_filePath.LastIndexOf("\\") + 1)));
                    _sendString.Append("?=\"");
                    _sendString.Append(CRLF);
                    _sendString.Append("Content-Transfer-Encoding: base64");
                    _sendString.Append(CRLF);
                    _sendString.Append("Content-Disposition: attachment;");
                    _sendString.Append(CRLF);
                    _sendString.Append(" filename=\"=?");
                    _sendString.Append(mailMessage.Charset.ToUpper());
                    _sendString.Append("?B?");
                    _sendString.Append(Base64Encode(_filePath.Substring(_filePath.LastIndexOf("\\") + 1)));
                    _sendString.Append("?=\"");
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                    _sendString.Append(GetStream(_filePath));
                    _sendString.Append(CRLF);
                    _sendString.Append(CRLF);
                }
                _sendString.Append("--=====");
                if (_htmlFlag)
                {
                    _sendString.Append("001_Dragon520636771063_");
                }
                else
                {
                    _sendString.Append("001_Dragon303406132050_");
                }
                _sendString.Append("=====--");
                _sendString.Append(CRLF);
                _sendString.Append(CRLF);
            }
            _sendString.Append(CRLF);
            _sendString.Append(".");
            _sendString.Append(CRLF);
            _exResult = DialogEx(_sendString.ToString(), "错误信件信息");
            if (!_exResult)
            {
                return(false);
            }
            _sendString.Length = 0;             //重置
            _sendString.Append("QUIT");
            _sendString.Append(CRLF);
            _exResult = DialogEx(_sendString.ToString(), "断开连接时错误");
            if (!_exResult)
            {
                return(false);
            }
            FNetworkStream.Close();
            FTcpClient.Close();
            return(true);
        }