使用C#开发邮件发送功能

调用:

SendTableMail.SendMsg(dt2, "IMA数据生成失败", list[i].PRDMODEL_CODE);

SendTableMail类的实现(组装Table消息格式,准备调用sendEmail类):

public class SendTableMail
    {
        //单一表格邮件内容
        public static void SendMsg(DataTable data,string mailTitle,string PRDMODEL_CODE)
        {
            string MailBody = "<p style=\"font-size: 10pt\">以下内容为系统自动发送,请勿直接回复,谢谢。</p><table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"000000\" style=\"font-size: 10pt;line-height: 15px;\">";
            MailBody += "<div align=\"center\">";
            MailBody += "<tr>";
            for (int hcol = 0; hcol < data.Columns.Count; hcol++)
            {
                MailBody += "<td bgcolor=\"999999\">&nbsp;&nbsp;&nbsp;";
                MailBody += data.Columns[hcol].ColumnName;
                MailBody += "&nbsp;&nbsp;&nbsp;</td>";
            }
            MailBody += "</tr>";

            for (int row = 0; row < data.Rows.Count; row++)
            {
                MailBody += "<tr>";
                for (int col = 0; col < data.Columns.Count; col++)
                {
                    MailBody += "<td bgcolor=\"dddddd\">&nbsp;&nbsp;&nbsp;";
                    MailBody += data.Rows[row][col].ToString();
                    MailBody += "&nbsp;&nbsp;&nbsp;</td>";
                }
                MailBody += "</tr>";
            }
            MailBody += "</table>";
            MailBody += "</div>";
            sendEmail.SendEmail(mailTitle, MailBody, PRDMODEL_CODE);
        }

        public static DataRow StruDataRow(DataTable dt, string tag, string con)
        {
            DataRow dr = dt.NewRow();
            dr["Tag"] = tag;
            dr["Content"] = con;
            return dr;
        }
    }

sendEmail类的实现:

public static class sendEmail
    {
        private static LogHelper logHelper = LogHelper.GetInstance(typeof(sendEmail));
        private static readonly Logger logger = new Logger(typeof(sendEmail));

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="mailSubject">邮箱主题</param>
        /// <param name="mailContent">邮箱内容</param>
        /// <returns>返回发送邮箱的结果</returns>
        public static bool SendEmail(string mailSubject, string mailContent, string PRDMODEL_CODE = "")
        {
            try
            {
                string SMTPServer = ConfigurationManager.AppSettings["SMTPServer"].ToString();//smtpServer
                string mailFrom = ConfigurationManager.AppSettings["SendAccount"].ToString();//登陆用户名
                string userPassword = ConfigurationManager.AppSettings["SendAccountPwd"].ToString();//登陆密码

                BLL.T_MAIL_CONFIGURATION_BLL bll = new BLL.T_MAIL_CONFIGURATION_BLL();
                //Model.T_MAIL_CONFIGURATION mail = bll.GetModel();//邮件发送账号
                //if(mail != null)
                //{
                //    mailFrom = mail.MAILACCOUNT;
                //    userPassword = mail.MAILPASSWORD;
                //}

                //数据库查询收件人邮箱地址

                var mailList = bll.GetT_MailList(PRDMODEL_CODE);

                //string ReceivingAccount = ConfigurationManager.AppSettings["ReceivingAccount"].ToString();//
                //string[] list = ReceivingAccount.Split(',');

                // 设置发送方的邮件信息,例如使用网易的smtp
                string smtpServer = SMTPServer; //SMTP服务器
                //string mailFrom = "13628604250@163.com"; 
                //string userPassword = "zhu1246194567";

                SmtpClient client = new SmtpClient();
                client.Host = smtpServer;//
                client.UseDefaultCredentials = true;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);

                MailMessage Message = new MailMessage();
                Message.From = new MailAddress(mailFrom);
                if (mailList.Count > 0)
                {
                    foreach (var item in mailList)
                    {
                        Message.To.Add(item.MAILACCOUNT);//将邮件发送给email
                    }
                    Message.Subject = mailSubject;
                    Message.Body = mailContent;
                    Message.SubjectEncoding = Encoding.UTF8;
                    Message.BodyEncoding = Encoding.UTF8;
                    Message.Priority = MailPriority.High;
                    Message.IsBodyHtml = true;

                    client.Send(Message);// 发送邮件
                }
                
                return true;
            }
            catch (SmtpException ex)
            {
                logHelper.Error("发送邮件失败,失败原因:", ex);
                return false;
            }
        }
    }

创建SMTP服务器(发送邮件需要SMTP服务器代发)

这里介绍创建网易SMTP(SMTP是邮件通讯格式)服务器:

1.先注册一个163网易邮箱
2.注册成功后登陆该邮箱
3.在该邮箱中找到设置>POP3/SMTP/IMAP点击进入,如下图:

4.进入后在POP3/SMTP/IMAP页面勾选POP3/SMTP服务和IMAP/SMTP服务,勾选后保存,如下图:

 

开启SMTP服务时会弹出下图,自动动生成授权密码

 

 特别注意的是代码调用的时候,填的邮件发送密码需要填上述的授权密码,而非邮箱账号的登录密码,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值