C#使用System.Net.Mail发送邮件全攻略

3星 · 超过75%的资源 需积分: 10 7 下载量 174 浏览量 更新于2024-09-17 收藏 29KB DOC 举报
“C#发送Email邮件的三种方法” 在.NET Framework 2.0及更高版本中,使用`System.Net.Mail`命名空间可以方便地实现电子邮件的发送。以下将详细介绍三种不同的方法来发送邮件: 1. 通过Localhost 在本地主机上发送邮件的方法适用于系统配置有邮件服务器的情况。下面是一个简单的示例代码: ```csharp public void SendMailLocalhost() { MailMessage msg = new MailMessage(); msg.To.Add("a@a.com"); msg.To.Add("b@b.com"); // 可以添加多个收件人 msg.CC.Add("c@c.com"); // 设置发件人信息 msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8); msg.Subject = "这是测试邮件"; msg.SubjectEncoding = System.Text.Encoding.UTF8; msg.Body = "邮件内容"; msg.BodyEncoding = System.Text.Encoding.UTF8; msg.IsBodyHtml = false; // 非HTML格式邮件 msg.Priority = MailPriority.High; // 高优先级邮件 SmtpClient client = new SmtpClient(); client.Host = "localhost"; // 设置SMTP服务器为本地主机 object userState = msg; try { client.SendAsync(msg, userState); // 异步发送 // 或者使用client.Send(msg); 进行同步发送 MessageBox.Show("发送成功"); } catch (Exception ex) { // 错误处理 } } ``` 这段代码首先创建了一个`MailMessage`对象,设置了收件人、抄送人、发件人、主题和邮件内容。然后,它使用`SmtpClient`对象指定SMTP服务器(本例为"localhost")并发送邮件。 2. 通过普通SMTP 如果邮件服务器不是本地主机,可以通过指定SMTP服务器地址来发送邮件: ```csharp client.Host = "your-smtp-server-address"; client.Port = yourPortNumber; // 您可能需要设置端口号,例如587或465 client.UseDefaultCredentials = false; // 不使用默认凭据 client.Credentials = new NetworkCredential("username", "password"); // 提供SMTP服务器的用户名和密码 ``` 这里,你需要替换`your-smtp-server-address`和`yourPortNumber`为实际的SMTP服务器地址和端口,并提供正确的登录凭据。 3. 通过SSL的SMTP 对于使用SSL加密的SMTP服务器,需要开启SSL支持: ```csharp client.EnableSsl = true; ``` 这将确保邮件发送过程中的通信安全。 在所有情况下,确保正确配置了邮件服务器的设置,如主机名、端口、认证信息等。如果发送邮件失败,应捕获`SmtpException`异常并进行适当的错误处理。此外,`SendAsync`方法用于异步发送,可以提高程序响应性,但需注意处理异步操作的完成或异常。如果希望同步发送,可以使用`Send`方法代替。