System.Net.Mail 发送邮件(带附件)

时间:2022-12-04 08:29:49

写在前面的话:
这些天正好在做邮箱,今天空闲下来之后把之前的总结总结。
首先System.Net.Mail
使用ASP.NET发送电子邮件,需要引用System.Net.Mail命名空间。System.Net.Mail 命名空间包含用于将电子邮件发送到简单邮件传输协议 (SMTP) 服务器进行传送的类。

MailMessage:提供属性和方法来创建一个邮件消息对象,即邮件内容。
MailMessage类:
From:发送邮件的地址
To:接收邮件的地址
Subject:邮件的标题
Priority:邮件的优先级(分别为为High,Low,Normal)
Attachments:电子邮件的数据的附件集合
Bcc:密送地址
Cc:抄送地址
Body:邮件正文
SubjectEncoding:电子邮件的主题内容使用的编码
IsBodyHtml:邮件正文是否为 Html 格式的值

Attachment:提供属性和方法来创建一个邮件附件对象,即邮件附件。

SmtpClient:将电子邮件传输到您指定用于邮件传送的 SMTP 主机。

SmtpClient类:
DeliveryMethod:指定如何处理待发的电子邮件
Host:SMTP 事务的主机的名称或 IP 地址
Credentials:设置用于验证发件人身份的凭据
这里就简单的介绍常用的几个类,需要了解更多可自行百度。
下面不带附件的邮件发送方法,调用直接按照注释传参即可。

 #region
    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="mailTo">要发送的邮箱</param>
    /// <param name="mailSubject">邮箱主题</param>
    /// <param name="mailContent">邮箱内容</param>
    /// <returns>返回发送邮箱的结果</returns>
    public static bool SendEmail(string mailTo,string mailSubject,string mailContent)
    {
        // 设置发送方的邮件信息,例如使用网易的smtp
        string smtpServer = "smtp.163.com"; //SMTP服务器
        string mailFrom = "XXX@163.com"; //登陆用户名
        string userPassword = "XXX";//登陆密码

        // 邮件服务设置
        SmtpClient smtpClient=new SmtpClient();
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
        smtpClient.Host = smtpServer; //指定SMTP服务器
        smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);//用户名和密码

        // 发送邮件设置 
        MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人
        mailMessage.Subject = mailSubject;//主题
        mailMessage.Body = mailContent;//内容
        mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
        mailMessage.IsBodyHtml = true;//设置为HTML格式
        mailMessage.Priority = MailPriority.Low;//优先级

        try
        {
            smtpClient.Send(mailMessage); // 发送邮件
            return true;
        }
        catch (SmtpException ex)
        {
            return false;
        }
    }

需要注意的是,如果是用qq服务器 个人账号需要一个授权码,具体打开方式 也可百度
则需要加上三行代码

                SmtpClient .EnableSsl = true;
                SmtpClient .UseDefaultCredentials = false;
                SmtpClient .Credentials = new System.Net.NetworkCredential("你得qq邮箱", "你得授权码"); 

需要带附件,则加上以下代码。

  Attachment amen = new Attachment(System.Web.HttpContext.Current.Server.MapPath(文件路径));
                 mailMessage.Attachments.Add(amen);

到此,发送邮箱所有内容介绍完毕。