C# 如何发送邮件消息


1.安装NUGET包

MailKit

2.代码如下

using MailKit.Net.Smtp;
using MimeKit;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication1
{
    public class MailHelper
    {
        /// 
        /// 发送电子邮件
        ///     
        /// 邮件标题
        /// 邮件内容
        /// 发送邮件需要的基本参数信息
        /// 

        public async Task SendMail(string subj, string bodys, SaleMail mailData)
        {
            #region 发邮件需要的基本参数

            var fromMail = mailData.LoginAccount; //发件人邮箱账号
            var pwd = mailData.LoginPwd;//发件人邮箱登录密码

            var toMail = mailData.ReceivedUser;//接收人邮箱账号,多个接收人用逗号分割开
            var otherUser = mailData.ReceivedOtherUser;//抄送人邮箱账号,多个抄送人用逗号分割开

            var smtpserver = mailData.MailServer;//邮箱服务地址 // smtp.mxhichina.com
            var port = mailData.MailPort;//邮箱端口:25

            if (string.IsNullOrWhiteSpace(smtpserver) ||
                port <= 0 ||
                string.IsNullOrWhiteSpace(fromMail) ||
                string.IsNullOrWhiteSpace(pwd) ||
                string.IsNullOrWhiteSpace(toMail))
            {
                return;
            }

            #endregion

            #region 发送内容
            var bodyType = "html";//暂时只支持html类型的,后续可以添加其余类型
            var message = new MimeMessage
            {
                Subject = subj,//邮件标题
                Body = new TextPart(bodyType)
                {
                    Text = bodys
                }
            };
            #endregion

            #region 发送人
            message.From.Add(new MailboxAddress("", fromMail));//发送人
            #endregion

            #region 收件人

            var toMailList = new List<string>();
            if (!string.IsNullOrWhiteSpace(toMail))
            {
                toMailList = toMail.Split(',').ToList();
            }
            foreach (var item in toMailList)
            {
                var curToMail = item.Trim();
                if (string.IsNullOrWhiteSpace(curToMail))
                {
                    continue;
                }
                message.To.Add(new MailboxAddress("", curToMail));//接收人

            }

            #endregion

            #region 抄送人
            var others = new List<string>();
            if (!string.IsNullOrWhiteSpace(otherUser))
            {
                others = otherUser.Split(',').ToList();
            }
            foreach (var s in others)
            {
                var curOther = s.Trim();
                if (string.IsNullOrWhiteSpace(curOther))
                {
                    continue;
                }
                message.Cc.Add(new MailboxAddress("", curOther));
            }

            #endregion

            #region 进行发送邮件

            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Connect(smtpserver, port);//建立连接:邮箱服务地址与端口
            smtpClient.Authenticate(fromMail, pwd);//发件人邮箱登录密码与登录账号            
            await smtpClient.SendAsync(message);//邮件传送
            smtpClient.Disconnect(true);//连接释放

            #endregion

        }

    }

    /// 
    /// 发送邮件需要的基本参数信息实体
    /// 
    public class SaleMail
    {

        /// 
        /// 邮箱登录人(发送人)账号
        /// 
        [Required]
        [StringLength(200)]
        [DefaultValue("")]
        public string LoginAccount { get; set; }


        /// 
        /// (发送人)邮箱登录密码
        /// 
        [Required]
        [StringLength(200)]
        public string LoginPwd { get; set; }


        /// 
        /// 接收人(多个按照逗号隔开)
        /// 
        [Required]
        [StringLength(200)]
        [DefaultValue("")]
        public string ReceivedUser { get; set; }

        /// 
        /// 抄送人(多个按照逗号隔开)
        /// 
        [Required]
        [StringLength(200)]
        [DefaultValue("")]
        public string ReceivedOtherUser { get; set; }


        /// 
        /// 邮箱服务地址(smtp.mxhichina.com)
        /// 
        [Required]
        [StringLength(200)]
        [DefaultValue("")]
        public string MailServer { get; set; }


        /// 
        /// 邮箱端口(25)
        /// 
        [Required]
        public int MailPort { get; set; }

    }
}

3.常见企业邮箱POP/SMTP/IMAP服务器地址设置

原文:http://mail.lzcdc.com/v2/help/detail?id=57

全球云邮
协议 无加密 SSL / TSL 服务器地址  
POP3 110 995 pop3.yunyou.top  
SMTP 25 465 / 587 smtp.yunyou.top  
IMAP 143 993 imap.yunyou.top  
新浪企业邮箱
协议 无加密 北京机房网通用户 北京机房电信用户 广州机房电信用户
POP3 110 pop3.sina.net pop3x.sina.net gzpop3.sina.net
SMTP 25 smtp.sina.net smtpx.sina.net gzsmtp.sina.net
IMAP 143 imap.sina.net imap.sina.net imap.sina.net
搜狐企业邮箱
协议 无加密 服务器地址    
POP3 110 mail.sohu.net    
SMTP 25 mail.sohu.net    
IMAP 143 mail.sohu.net    
21CN企业邮箱
协议 无加密 SSL / TSL 国内服务器 海外服务器
POP3 110 995 Pop.bnet.cn Pop-enthk.bnet.cn
SMTP 25 465 / 587 smtp.bnet.cn smtp-enthk.bnet.cn
IMAP 143 993 imap.bnet.cn imap-enthk.bnet.cn
阿里云企业邮箱(原万网邮箱)
协议 无加密 SSL / TSL 服务器地址  
POP3 110 995 pop3.mxhichina.com  
SMTP 25 465 smtp.mxhichina.com  
IMAP 143 993 imap.mxhichina.com  
腾讯企业邮箱
协议 无加密 SSL / TSL 国内服务器地址 海外服务器地址
POP3 110 995 pop.exmail.qq.com hwpop.exmail.qq.com
SMTP 25 465 smtp.exmail.qq.com hwsmtp.exmail.qq.com
IMAP 143 993 imap.exmail.qq.com hwimap.exmail.qq.com
163网易企业邮箱
协议 无加密 SSL / TSL 服务器地址  
POP3 110 995 pop.qiye.163.com  
SMTP 25 994 smtp.qiye.163.com  
IMAP 143 993 imap.qiye.163.com

C