C# 发送邮件类使用攻略
1.前言
在 Web 应用程序开发中,邮件功能是非常常见的一个需求。C# 提供了一些内置类库,可以轻松实现邮件的发送和接收。
本文将通过一些示例,带领读者了解 C# 中如何发送邮件。
2.准备工作
在开始之前,我们需要准备以下内容:
- 一个邮箱账号,用于发送邮件。
- SMTP 服务器地址和端口号。SMTP(Simple Mail Transfer Protocol)是用于发送邮件的协议。不同的邮件服务商会有不同的 SMTP 服务器地址和端口号。例如,Gmail 的 SMTP 服务器地址和端口号是
smtp.gmail.com
和587
。 - 编辑器。我们可以使用 Visual Studio 或其他 C# 编辑器。
3.使用 C# 发送邮件
接下来,我们将通过两个示例演示如何使用 C# 发送邮件。
3.1 示例一
3.1.1 整体结构
以下是一个比较简单的发送邮件的示例代码:
using System;
using System.Net;
using System.Net.Mail;
namespace TestMail
{
class Program
{
static void Main(string[] args)
{
string smtpServer = "smtp.gmail.com"; //SMTP服务器地址
string smtpAccout = "你的邮箱账号"; //SMTP账号
string smtpPassword = "你的邮箱密码"; //SMTP密码
string to = "收件人邮箱地址"; //收件人地址
MailMessage mailMessage = new MailMessage(smtpAccout, to); //创建邮件实例
mailMessage.Subject = "邮件标题";
mailMessage.Body = "邮件内容";
SmtpClient smtpClient = new SmtpClient(); //创建SMTP客户端实例
smtpClient.EnableSsl = true; //启用SSL
smtpClient.Port = 587; //设置SMTP端口号
smtpClient.Host = smtpServer; //设置SMTP服务器地址
smtpClient.UseDefaultCredentials = false; //设置SMTP使用用户名和密码验证
smtpClient.Credentials = new NetworkCredential(smtpAccout, smtpPassword); //设置SMTP用户名和密码
smtpClient.Send(mailMessage); //发送邮件
}
}
}
此示例需要引用以下命名空间:
using System.Net;
using System.Net.Mail;
3.1.2 示例说明
以上示例中,我们首先定义了 SMTP 服务器地址、SMTP 账号、SMTP 密码以及收件人邮箱地址。然后,我们创建了一个邮件实例 MailMessage
,设置了邮件的标题和内容。接着,我们创建了一个 SMTP 客户端实例 SmtpClient
,设置了 SMTP 服务器地址、端口号、验证方式以及用户名和密码。最后,我们调用 smtpClient.Send(mailMessage)
方法发送邮件。
需要注意的是,有些邮件服务商可能需要更严格的验证方式。在这种情况下,需要在 SMTP 客户端实例中设置 DeliveryMethod
为 SmtpDeliveryMethod.Network
,并在 smtpClient.Send(mailMessage)
方法之前调用 smtpClient.SendAsync(mailMessage, userToken)
方法进行身份验证。
3.2 示例二
以下是一个稍微复杂一些的发送邮件的示例代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
namespace TestMail
{
class Program
{
static void Main(string[] args)
{
string smtpServer = "smtp.gmail.com"; //SMTP服务器地址
string smtpAccout = "你的邮箱账号"; //SMTP账号
string smtpPassword = "你的邮箱密码"; //SMTP密码
string to = "收件人邮箱地址"; //收件人地址
string cc = "抄送人邮箱地址"; //抄送人地址
string bcc = "密送人邮箱地址"; //密送人地址
MailMessage mailMessage = new MailMessage(smtpAccout, to); //创建邮件实例
mailMessage.Subject = "邮件标题";
mailMessage.Body = "邮件内容";
mailMessage.CC.Add(cc); //添加抄送人
mailMessage.Bcc.Add(bcc); //添加密送人
Attachment attachment = new Attachment("C:\\Users\\Administrator\\Documents\\test.jpg", MediaTypeNames.Image.Jpeg); //创建附件实例
mailMessage.Attachments.Add(attachment); //添加附件
AlternateView alternateView = AlternateView.CreateAlternateViewFromString("<html><body><h1>这是具有HTML格式的邮件正文</h1><br/><img src=\"cid:test.jpg\"></body></html>", null, MediaTypeNames.Text.Html); //创建 HTML 格式的邮件正文实例
LinkedResource linkedResource = new LinkedResource("C:\\Users\\Administrator\\Documents\\test.jpg", MediaTypeNames.Image.Jpeg); //创建嵌入邮件正文的附件实例
linkedResource.ContentId = "test.jpg"; //设置 ContentId 属性
alternateView.LinkedResources.Add(linkedResource); //将嵌入邮件正文的附件添加到邮件正文实例中
mailMessage.AlternateViews.Add(alternateView); //将 HTML 格式的邮件正文实例添加到邮件实例中
SmtpClient smtpClient = new SmtpClient(); //创建SMTP客户端实例
smtpClient.EnableSsl = true; //启用SSL
smtpClient.Port = 587; //设置SMTP端口号
smtpClient.Host = smtpServer; //设置SMTP服务器地址
smtpClient.UseDefaultCredentials = false; //设置SMTP使用用户名和密码验证
smtpClient.Credentials = new NetworkCredential(smtpAccout, smtpPassword); //设置SMTP用户名和密码
smtpClient.Send(mailMessage); //发送邮件
}
}
}
3.2.1 示例说明
以上示例中除了设置收件人、SMTP 账号、SMTP 密码、SMTP 服务器地址以外,我们还为邮件实例添加了以下内容:
- 抄送人和密送人:使用
CC
和Bcc
属性添加抄送人和密送人。 - 附件:使用
Attachment
类创建附件,并通过Attachments
属性添加附件到邮件实例中。 - 嵌入邮件正文的附件:使用
LinkedResource
类创建嵌入邮件正文的附件,并通过AlternateView
类创建 HTML 格式的邮件正文实例。通过设置ContentId
属性,让附件在邮件正文中通过cid:
协议被引用。
4.注意事项
在使用 C# 发送邮件时,需要注意以下几点:
- 确保 SMTP 服务器地址和端口号配置正确。
- 确保 SMTP 账号和密码配置正确。
- 根据需要设置邮件的类型、内容、附件等属性。
- 确保已设置好必要的命名空间。
- 在发送邮件之前,可以使用
smtpClient.SendAsync(mailMessage, userToken)
方法进行身份验证。
5.结语
本文介绍了如何使用 C# 发送邮件。读者可以根据自己的需要,对示例代码进行修改,以满足更多的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 邮箱mail 发送类 - Python技术站