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日

相关文章

  • 解析Tomcat 6、7在EL表达式解析时存在的一个Bug

    解析Tomcat 6、7在EL表达式解析时存在的一个Bug 背景 在使用Tomcat 6或7的过程中,若使用EL表达式进行解析,会出现下标访问时数组越界的问题。比如在表达式${array[1]}中,即使数组array的长度不足2,Tomcat也不会抛出越界异常,而是返回null。 原因 这是由于Tomcat在解析EL表达式时采用了JSP规范中的解析方式,即调…

    Java 2023年5月19日
    00
  • 什么是虚引用?

    虚引用是Java中四种引用类型之一,是一种比弱引用还弱的引用类型。它的主要作用是帮助跟踪对象的销毁过程,但不能通过虚引用访问到对象。在Java中,虚引用被用于在对象被销毁之前进行必要的清理工作,例如关闭文件、释放系统资源等任务。 虚引用通常会被用在以下情况中: 在对象销毁的同时,进行一些资源释放操作。 追踪对象被垃圾回收机制回收的过程,进而查看对象的回收状态…

    Java 2023年5月10日
    00
  • Java Date(日期)对象进行格式化的思路详解

    以下是Java Date(日期)对象进行格式化的完整攻略。 格式化思路 Java中提供了SimpleDateFormat类,可以将Date对象转换成指定格式的字符串。SimpleDateFormat类中定义了一些字符,用于表示时间在输出时应该如何格式化。例如,字符yyyy表示年份,MM表示月份,dd表示日期,HH表示小时,mm表示分钟,ss表示秒钟等。这些字…

    Java 2023年5月20日
    00
  • SpringBoot创建并简单使用的实现

    下面我会给出一份详细的Spring Boot创建并简单使用的攻略,包含以下几个部分: 环境准备 创建Spring Boot项目 使用Spring Boot 示例1:创建RESTful API 示例2:集成Thymeleaf模板引擎 环境准备 在开始创建Spring Boot项目之前,需要进行相关的环境准备。首先,需要确保你已经安装了Java和Maven,在安…

    Java 2023年5月15日
    00
  • Spring.Net框架简介

    Spring.Net框架简介 Spring.Net 是一个开源的 .NET 应用程序框架,它是 Java Spring 框架的 .NET 版本。Spring.Net 提供了一种简单的方法来创建可测试、松散耦合的应用程序,它支持依赖注入、面向切面编程、配置管理等功能。本文将详细介绍 Spring.Net 框架的基本概念、核心组件和使用方法。 基本概念 在 Sp…

    Java 2023年5月18日
    00
  • Java MultipartFile实现上传文件/上传图片

    接下来我将为您详细讲解如何使用Java MultipartFile实现上传文件/上传图片的完整攻略。 什么是Java MultipartFile MultipartFile是Spring框架内置的一个接口,用于处理HTTP的多部分请求,用于上传文件/上传图片,它可以用于处理在表单中上传的文件,支持大文件上传和多文件上传。 实现上传文件/上传图片的完整攻略 下…

    Java 2023年5月20日
    00
  • eclipse怎么导入Api文档?eclipse安装Api文件的方法

    当我们在使用 Eclipse 进行 Java 项目开发时,可能需要查看 Java API 文档以了解 Java 标准库中提供的类和方法。本文将提供详细的步骤,介绍如何在 Eclipse 中导入 Java API 文档以便更好地查看和使用 Java 标准库。 步骤一:下载 Java API 文档 首先,我们需要从 Oracle 官方网站下载 Java API …

    Java 2023年6月15日
    00
  • ssm框架+PageHelper插件实现分页查询功能

    以实现用户管理模块的分页查询功能为例,在使用ssm框架搭建基础框架后,我们可以按照以下步骤实现分页查询功能。 步骤一:添加PageHelper依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifact…

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