C# 邮箱mail 发送类

C# 发送邮件类使用攻略

1.前言

在 Web 应用程序开发中,邮件功能是非常常见的一个需求。C# 提供了一些内置类库,可以轻松实现邮件的发送和接收。

本文将通过一些示例,带领读者了解 C# 中如何发送邮件。

2.准备工作

在开始之前,我们需要准备以下内容:

  1. 一个邮箱账号,用于发送邮件。
  2. SMTP 服务器地址和端口号。SMTP(Simple Mail Transfer Protocol)是用于发送邮件的协议。不同的邮件服务商会有不同的 SMTP 服务器地址和端口号。例如,Gmail 的 SMTP 服务器地址和端口号是 smtp.gmail.com587
  3. 编辑器。我们可以使用 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 客户端实例中设置 DeliveryMethodSmtpDeliveryMethod.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 服务器地址以外,我们还为邮件实例添加了以下内容:

  1. 抄送人和密送人:使用 CCBcc 属性添加抄送人和密送人。
  2. 附件:使用 Attachment 类创建附件,并通过 Attachments 属性添加附件到邮件实例中。
  3. 嵌入邮件正文的附件:使用 LinkedResource 类创建嵌入邮件正文的附件,并通过 AlternateView 类创建 HTML 格式的邮件正文实例。通过设置 ContentId 属性,让附件在邮件正文中通过 cid: 协议被引用。

4.注意事项

在使用 C# 发送邮件时,需要注意以下几点:

  1. 确保 SMTP 服务器地址和端口号配置正确。
  2. 确保 SMTP 账号和密码配置正确。
  3. 根据需要设置邮件的类型、内容、附件等属性。
  4. 确保已设置好必要的命名空间。
  5. 在发送邮件之前,可以使用 smtpClient.SendAsync(mailMessage, userToken) 方法进行身份验证。

5.结语

本文介绍了如何使用 C# 发送邮件。读者可以根据自己的需要,对示例代码进行修改,以满足更多的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 邮箱mail 发送类 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java常用工具类 IP、File文件工具类

    Java常用工具类是在Java编程中经常用到的类库,这些类库已经被Java官方开发团队封装好,我们可以直接调用这些工具类的方法来实现一些常见的操作。其中,IP和File工具类是Java编程领域中比较常用的工具类。 IP 工具类 1. 获取本机IP 我们可以使用Java中的InetAddress类来获取本机的IP地址。 import java.net.Inet…

    Java 2023年5月20日
    00
  • 最全Java面试208题,涵盖大厂必考范围

    最全Java面试208题攻略 简介 Java作为一门广泛应用的编程语言,是许多公司招聘的必备技能,也是很多程序员的选择。针对Java面试,现有一份较全的面试题目列表,本攻略将结合这些问题提供完整的解答。 策略 首先,将Java面试题目逐一分析,深入理解问题本质及出题人意图,思考面试官可能会对于这些问题提出哪些追问,以及我们该如何回答。 其次,可通过企业面试官…

    Java 2023年5月24日
    00
  • java实现微信公众号扫一扫

    Java实现微信公众号扫一扫攻略 微信公众平台提供了扫一扫功能,可以实现用户扫描二维码并获取相关信息。本文将讲解如何使用Java实现微信公众号扫一扫功能,步骤如下: 步骤1:注册微信公众平台账号 如果还没有微信公众平台的账号,请前往微信公众平台官网进行注册。注册完毕后,会得到一个AppID和AppSecret,这二者是使用微信API的重要凭证。 步骤2:生成…

    Java 2023年6月15日
    00
  • Spring MVC过滤器-登录过滤的代码实现

    Spring MVC过滤器-登录过滤的代码实现 Spring MVC是一种基于Java的Web框架,它提供了许多便捷的功能和工具,使得开发者可以更加高效地开发Web应用程序。其中,过滤器是Spring MVC中常用的一种技术,本文将详细讲解如何在Spring MVC中实现登录过滤,并提供两个示例来说明如何实现这一过程。 步骤一:创建Spring MVC项目 …

    Java 2023年5月17日
    00
  • 浅谈SpringMVC国际化支持

    接下来我将详细讲解“浅谈SpringMVC国际化支持”的完整攻略,包括以下内容: 什么是SpringMVC国际化支持 如何使用SpringMVC国际化支持 示例说明:如何在SpringMVC中实现国际化 什么是SpringMVC国际化支持 SpringMVC国际化支持是一种用于支持跨地区和语言的Web应用程序的技术,它可以将Web应用程序的文本信息本地化,以…

    Java 2023年5月16日
    00
  • Spring使用Setter完成依赖注入方式

    Spring使用Setter完成依赖注入方式的完整攻略 什么是依赖注入 依赖注入(Dependency Injection,简称DI)是一种编程思想,它将一个对象所依赖的其他对象交给容器在运行期间动态地注入。这样可以消除类与类之间的耦合,降低代码的复杂度,提高代码的可维护性和可复用性。 Spring框架中使用依赖注入来管理对象之间的依赖关系,开发者只需要负责…

    Java 2023年5月27日
    00
  • java实现随机数生成器

    生成随机数是我们在Java程序中经常遇到的问题,Java提供了一些内置的方法来生成伪随机数,我们也可以使用外部库来实现更高级别的随机化过程。本文将为大家介绍Java实现随机数生成器的完整攻略。 生成伪随机数 Java为我们提供了一些内置的类,比如Random和Math,来生成伪随机数。 使用Random类 Random类是Java中最基本的生成随机数的类之一…

    Java 2023年5月23日
    00
  • 如何在Java SpringBoot项目中配置动态数据源你知道吗

    当我们使用 SpringBoot 开发项目时,通常会遇到需要动态切换不同数据源的需求。这时候,我们可以通过配置动态数据源来解决这个问题。下面是详细讲解如何在 Java SpringBoot 项目中配置动态数据源的攻略。 1. 引入相关依赖 我们需要引入如下两个 SpringBoot 的依赖: <dependency> <groupId&gt…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部