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日

相关文章

  • Spring Boot实战之模板引擎

    SpringBoot实战之模板引擎 模板引擎是用于生成动态HTML内容的工具,它将模板文件和数据进行结合,生成最终的HTML文档,常见的模板引擎有Thymeleaf、FreeMarker、Velocity等。在SpringBoot框架中,可以非常方便地集成各种模板引擎,本文将重点介绍如何使用Thymeleaf和FreeMarker模板引擎。 Thymelea…

    Java 2023年5月15日
    00
  • Java Mybatis架构设计深入了解

    Java Mybatis架构设计深入了解 介绍 MyBatis是一种优秀的基于Java的ORM(对象关系映射)框架,具有易于使用、灵活性和高效性等优点。在Java开发中,MyBatis取代了早期的JDBC编程方式,为Java开发者提供了一个更加优雅的解决ORM的方式。 在使用MyBatis时,你需要了解它的架构设计,以便更好地使用和优化你的代码。 MyBat…

    Java 2023年5月20日
    00
  • springboot自定义redis-starter的实现

    下面我将详细讲解 Spring Boot 自定义 Redis Starter 的实现过程: 1. 编写 Redis Starter 的核心代码 Spring Boot 自定义 Starter 可以方便用户在项目中引入各种第三方组件。在这里我们需要编写一个 Redis Starter,使得用户可以通过 Spring Boot 自动配置方式来使用 Redis。 …

    Java 2023年5月19日
    00
  • JavaBean和SpringBean的区别及创建SpringBean方式

    JavaBean和SpringBean的区别: JavaBean是Java语言编写的可重用组件,它是普通的Java类,遵循特定的约定(约定优于配置)。JavaBean将其属性封装在私有字段中,并提供公共的getter和setter方法以让外部程序可以访问这些私有属性。JavaBean可以在任何Java环境中被使用,例如Java SE、Java EE等。 Sp…

    Java 2023年5月19日
    00
  • 一篇文章带你入门Java方法详解

    一篇文章带你入门Java方法详解 Java是一门面向对象的编程语言,方法是Java中基本的编程元素之一。方法是一个可以重复使用的代码块,它可以帮助程序员避免重复书写相同的代码,提高代码的复用性和可维护性。如果你正在学习Java,那么方法绝对是必须掌握的知识点之一。本文将通过详细的实例讲解Java方法的基础知识。 Java方法的定义和语法 Java方法是指在类…

    Java 2023年5月19日
    00
  • Java方法及数组相关原理解析

    Java方法及数组相关原理解析 方法(Method) 方法是一段可重用的代码块,可以接受输入并返回输出。在Java中,方法定义了一个类的行为或功能。方法的重要性在于: 提高代码的重用性 降低代码的复杂度 提高代码的可读性 Java方法的定义格式为: 修饰符 返回值类型 方法名(参数类型 参数名) { //方法体 return 返回值; } 其中: 修饰符:修…

    Java 2023年5月26日
    00
  • java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】

    针对这个问题,我将分成两个部分进行回答。 第一部分:Java正则表达式实现提取需要的字符并放入数组 基本概念 正则表达式是用于描述字符串模式的一个表达式。可以根据正则表达式来匹配、查找、替换符合特定模式的文本。在 Java 中,正则表达式需要使用java.util.regex包中的类来实现。 正则表达式语法 下面是常用的正则表达式语法: . 匹配任何一个字符…

    Java 2023年5月26日
    00
  • 简单了解java ORM框架JOOQ

    简单了解Java ORM框架JOOQ 什么是Java ORM框架JOOQ Java ORM框架JOOQ(Java Object Oriented Querying)是一个基于Java语言的数据库ORM框架。JOOQ通过提供类型安全、易于理解的DSL(领域特定语言)来简化数据库查询操作。DSL是根据数据库模式自动生成的,能够从Java代码直接映射到SQL语句。…

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