今天遇到一个需求需要通过客户端发送邮件,然后开始google各种博文,遇到了一些问题,总了一下,代码如下:

MailMessage mailMessage = new MailMessage();//定义邮件
                    SmtpClient smtpClient = new SmtpClient();//定义发件客户端
                    mailMessage.From = new MailAddress("发件人地址");//邮件发送人地址
                    mailMessage.Subject = "test";//邮件主题
                    mailMessage.Body = "test";//邮件内容
                    mailMessage.IsBodyHtml = true;//HTML格式
                    mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//编码UTF8
                    mailMessage.Priority = MailPriority.Normal;//邮件发送的优先性为正常
                    mailMessage.To.Add("发件人地址");
                    smtpClient.UseDefaultCredentials = false;//使用默认凭据
                    smtpClient.EnableSsl = false;//启动SSL,即安全发送
                    smtpClient.Credentials = new NetworkCredential("发件人地址", "密码");
                    smtpClient.Host = "smtp.xxxxx";//发送连接服务器主机IP
                    smtpClient.Port = 25;//端口号  25,465
                    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//传递电子邮件消息,通过网络发送电子邮件到SMTP
                    smtpClient.Send(mailMessage);//确认发送按钮

 

以上代码测试有效,中间也遇到了问题

1.无法读取的数据传输连接:net_io_connectionclosed

解释:需要将UseDefaultCredentials设置放到登录信息smtpClient.Credentials的前面

smtpClient.UseDefaultCredentials
smtpClient.Credentials = new NetworkCredential("发件人地址", "密码");