Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >邮件发送功能开发

邮件发送功能开发

作者头像
郑小超.
发布于 2018-01-26 07:55:20
发布于 2018-01-26 07:55:20
4.1K00
代码可运行
举报
文章被收录于专栏:GreenLeavesGreenLeaves
运行总次数:0
代码可运行

作为一名.Net开发,"邮件发送"功能的开发和使用是必须要掌握的,因为这个功能作为“消息推送”的一种手段经常出现在各种.Net系统中,所以本文将对.Net平台下的“邮件发送”,做一个细致的分析!

一、who需要邮件功能

1、服务提供方:需提供邮件收发客户端或Web服务。如:QQ邮箱、GMail邮箱、126、163等知名邮件服务提供商。注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STMP服务器视为是"恶意邮件或垃圾邮件"!

2、消息推送:消息推送方

3、App:某些网站会员的注册功能或者功能激活功能。

等等....

二、邮件协议

1、SMTP(Simple Mail Transfer Protocol)   ---简单邮件传输协议

它是一组用于源地址到目的地址传送邮件的规则,由它来控制信件的中转方式SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或者中转信件时找到下一个地址。通过SMTP协议指定的服务器地址,就可以把E-Mail寄到指定的收件人的服务器上了.整个过程只需要几分钟.它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。

注:SMTP服务器是遵循SMTP协议的发送邮件,用来发送或者中转发出的邮件。

详细请参考百度百科

2、POP3(Post Office Protocol -Version3)   ---邮局协议第三个版本

它是TCP/IP协议中的一员,由RFC1939 定义,这个协议主要支持客户端远程管理在服务器上的电子邮件。注:提供了SSL加密的POP3协议被称为POP3S.

注:POP协议支持"离线"邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户程序用来连接服务端,并下载所有未阅读的电子邮件。这种离线模式称为存储转发模式,将邮件从服务器从邮件服务器送到个人终端上,一般是PC机或者MAC,一旦邮件发送到PC或者MAC上,存储在服务器上的邮件会立刻被删除,但目前的POP3邮件服务器都可以"只下载邮件,服务器端并不删除.",也就是改进的POP3协议.OP适用于C/S结构的脱机模型的电子邮件协议,目前已发展POP3到第三版,称POP3。脱机模型即不能在线操作,POP不支持对服务器邮件进行扩展操作,此过程需要更高级的IMAP4协议来完成。支持POP协议使用ASCII码来传输数据消息,这些数据消息可以是指令,也可以是应答。

详细请参考百度百科

3、IMAP4(Internet Message Acess Protocol -Version4)   ---交互式数据消息访问协议第四个版本

IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的,后期版本是华盛顿州立大学进行开发的,IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”(IMAP4rev1)。IMAP4协议与POP3协议一样也是规定个人计算机如何访问网上的邮件的服务器进行收发邮件的协议,但是IMAP4协议同POP3协议相比更高级。IMAP4支持协议客户机在线或者离开访问并阅读服务器上的邮件,还能交互式的操作服务器上的邮件。IMAP4协议更人性化的地方是不需要像POP3协议那样把邮件下载到本地,用户可以通过客户端直接对服务器上的邮件进行操作(这里的操作是指:在线阅读邮件 在线查看邮件主题 大小 发件地址等信息)。用户还可以在服务器上维护自己邮件目录(维护是指移动)新建 删除重命名共享 抓取文本 等操作)。IMAP4协议弥补了POP3协议的很多缺陷,,由RFC3501定义。本协议是用于客户机远程访问服务器电子邮件,它是邮件传输协议新的标准。

详细请参考百度百科

三、邮箱分类

现阶段的邮箱主要有以下几种:免费邮箱、vip邮箱、域名邮箱、企业邮箱.......。

1、免费邮箱

“免费邮箱”是邮件商家为任何人免费提供的电子邮件传输服务,作为交换,该网站上你请求电子邮件服务和一些个人信息的地方会显示广告。它更适合个人生活和娱乐的需要,却并非那么注重邮箱的安全和功能。

部分免费邮件SMTP服务器参考设置:

Email类型

SMTP[Host]主服务器

Port[端口号]

是否可启用SSL

Gmail(Google 的网络邮件服务)

smtp.gmail.com

587

True

HotMail/Live

smtp.live.com

25

True

QQ/FoxMail(Foxmail被腾讯收购)

smtp.qq.com

25

False

126(网易)

smtp.126.com

25

False

163(网易)

smtp.163.com

25

False

Sina(新浪邮箱)

smtp.sina.com

25

False

Tom

smtp.tom.com

25

False

SoHu(搜狐邮箱)

smtp.sohu.com

25

False

Yahoo(雅虎邮箱)(已关闭)

smtp.mail.yahoo.com

25

False

2、vip邮箱

“vip邮箱”即邮件商家提供的收费版邮件服务,在速度、安全、稳定性、容量、附件大小限制、群发数等方面相对好些。其SMTP服务器设置就是多了个vip字符。eg:smtp.vip.qq.com。邮箱地址:369220123@vip.qq.com。

3、域名邮箱

“域名邮箱”是个性化邮件服务,能让您用自己的域名做为后缀即“@自己的域名”,前提是你需要一个域名(通常域名要收费)。功能比免费邮箱要多:可分配单个邮箱、规划容量、更加的安全、更好的稳定性、个性化名称、邮件发送量更大、附件大小限制等等。

4、企业邮箱

“企业邮箱”是域名邮箱,但通常是指通过付费方式获得更好服务的邮箱。eg:您公司域名为www.abc.com,则SMTP服务器为:mail.abc.com,邮箱地址:office@abc.com;

使用企业邮箱的优势:

1)         提升公司企业形象、邮箱稳定性、邮箱反垃圾反病毒性能、邮件收发速度;

2)         通过购买服务,能适应企业不断升级需求;

3)         为员工分配(域名)企业邮箱,便于将流动员工所有业务联系保留和延续下来;

4)         监控邮件(实际为邮件暗抄送功能),以防公司的机密和重要信息流失;

5)         获得高性能邮件海外转发功能,解决国际高效邮件收发、邮件营销有效投递等问题;

6)         出站电子邮件过滤,比如:敏感字过滤、基于政策邮件加密等等;

7)         等等。

四、.Net提供的关于邮件的类库

在.Net2.0之前的版本,使用System.Web.Mail发送邮件,在2.0之后的版本,使用System.Net.Mail来发送邮件.2.0之后的版本主要用到了.Net2.0之后新增的两个类,分别是System.Net.Mail.MailMessage和System.Net.Mail.SmtpClient两个类,在SMTP身份验证方面用到了System.Net.NetworkCredential类。

1、MailMessage类的使用,如下表格:

属性名

属性值要求的类型

属性值的意义

From

MailAddress

获取或设置此电子邮件的发信人地址。 两者区别:当 Sender与From 都有设定时,Mail Server 会取用Sender 的设定发信,但邮件上的名称会使用 From 的设定,而若不需要 Sender 和 From 同时设定时,則 Sender 可以免设,但 From 一定要设。详细请看:《MailMessage 的 Sender 和From? 傻傻分不清楚》

Sender

To

MailAddressCollection

获取包含此电子邮件的收件人的地址集合。

CC

MailAddressCollection

获取包含此电子邮件的抄送 (CC) 收件人的地址集合。

Bcc

MailAddressCollection

获取包含此电子邮件的密件抄送(BCC) 收件人的地址集合。

Attachments

AttachmentCollection

获取用于存储附加到此电子邮件的数据的附件集合。

Headers

NameValueCollection

获取与此电子邮件一起传输的电子邮件标头。(例如用于:发送DKIM签名的邮件)

Subject

string

获取或设置此电子邮件的主题。

Body

string

获取或设置邮件正文。

AlternateViews

AlternateViewCollection

指定一个电子邮件不同格式显示的副本。(eg:发送HTML格式的邮件,可能希望同时提供邮件的纯文本格式,以防止一些收件人使用的电子邮件阅读程序无法显示html内容)

IsBodyHtml

bool

默认false。获取或设置指示邮件正文是否为 Html 格式的值。

Priority

MailPriority

默认Normal。获取或设置此电子邮件的优先级。(Normal | Low| High)

HeadersEncoding

Encoding

获取或设置此电子邮件的用户定义的自定义标题使用的编码。

SubjectEncoding

Encoding

获取或设置此电子邮件的主题内容使用的编码。

BodyEncoding

Encoding

获取或设置用于邮件正文的编码。

ReplyToList

MailAddressCollection

设置接收方回复邮件时默认的接收地址,eg:你用一个邮箱发信,但却用另一个来收信。 (ReplyTo,表示单个回复地址,已过期,使用ReplyToList代替)

DeliveryNotificationOptions 注:这个属性要配合BuildDeliveryStatusNotificationString()方法一起使用

DeliveryNotificationOptions(枚举)

// 摘要:// 描述电子邮件的传送通知选项。[Flags]public enum DeliveryNotificationOptions{// 摘要:// 不会发送通知信息。 邮件服务器将利用其已配置的行为,以确定它是否应生成传递通知。None = 0,//// 摘要:// 通知传送是否成功。OnSuccess = 1,//// 摘要:// 通知传送是否失败。OnFailure = 2,//// 摘要:// 通知传送是否延迟。Delay = 4,//// 摘要:// 不应在任何情况下生成的通知。Never = 134217728,}

2、SmtpClient类的使用 如下表格:

属性名

属性值要求的类型

属性值的意义

Host

string

获取或设置用于 SMTP 事务的主机的名称或 IP 地址。

Port

int

获取或设置用于 SMTP 事务的端口。

UseDefaultCredentials

bool

默认false。 若要使用默认网络凭据,可以将UseDefaultCredentials设置为 true,此时System.Net.CredentialCache.DefaultCredentials(应用程序系统凭证)会随请求一起发送。 如果UseDefaultCredentials属性设置为 false,则连接到服务器时会将 Credentials 属性中设置的值用作凭据。如果UseDefaultCredentials属性设置为 false 并且尚未设置 Credentials 属性,则将邮件以匿名方式发送到服务器。若SMTP 服务器要求在验证客户端的身份则会抛出异常。

Credentials

ICredentialsByHost

获取或设置用于验证发件人身份的凭据。

ClientCertificates

X509CertificateCollection

指定应该使用哪些证书来建立安全套接字层 (SSL) 连接。

EnableSsl

bool

默认false。指定SmtpClient是否使用安全套接字层 (SSL)加密连接。

Timeout

int

默认100000.获取或设置一个值,该值指定同步重载:SmtpClient.Send()调用的超时时间。

自建本地SMTP服务器获取邮件时需要使用到的属性

DeliveryMethod

SmtpDeliveryMethod

默认NetworkCredential。 // 摘要: // 指定如何发送电子邮件。 public enum SmtpDeliveryMethod { // 摘要: // 电子邮件通过网络发送到 SMTP 服务器。 Network = 0, // // 摘要: // 将电子邮件复制到 System.Net.Mail.SmtpClient.PickupDirectoryLocation 属性指定的目录,然后由外部应用程序传送。 SpecifiedPickupDirectory = 1, // // 摘要: // 将电子邮件复制到拾取目录,然后通过本地 Internet 信息服务 (IIS) 传送。 PickupDirectoryFromIis = 2, }

PickupDirectoryLocation

string

获取或设置文件夹,应用程序在该文件夹中保存将由本地 SMTP 服务器处理的邮件。

TargetName

string

"SMTPSVC/" + this.host。获取或设置在使用扩展保护时用于身份验证的服务提供程序名称 (SPN)。

ServicePoint

ServicePoint

获取用于传输电子邮件的网络连接。(应该会保存TCP连接,避免再次进行TCP的三次握手???)

五、实战

实战使用QQ邮箱.首先打开“POP3/SMTP服务”,图解如下:

保存授权码,这个很重要!!!

1、简单邮件发送功能

上面两个关键类介绍完之后,就可以开始编写简单的邮件发送功能了.代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MailMessage mm = new MailMessage();
mm.From = new MailAddress(From, "张三", Encoding.UTF8);
mm.To.Add(new MailAddress(To));
mm.BodyEncoding = Encoding.UTF8;
mm.SubjectEncoding = Encoding.UTF8;
mm.Subject = "this is a test email";
mm.Body = "this is a test body<div><a href=\"http://www.baidu.com\">百度</a></div>";
mm.IsBodyHtml = true;
SmtpClient sc = new SmtpClient("smtp.qq.com", 587);
sc.Credentials = new NetworkCredential(From,Pwssword);//此处的password参数填刚刚保存的授权码
sc.EnableSsl = true;
sc.Send(mm);

 ok,如果上面的操作都正确的话,那么邮件将会发送成功。

2、邮件内容内嵌图片和mp3,注:不是以附件的形式发过去

(1)、通过超链接的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MailMessage mm = new MailMessage();
mm.From = new MailAddress(From, "张三", Encoding.UTF8);
mm.To.Add(new MailAddress(To));
mm.BodyEncoding = Encoding.UTF8;
mm.SubjectEncoding = Encoding.UTF8;
mm.Subject = "this is a test email";
//通过超链接链接网络上的图片
mm.Body = "this is a test body<div><a href=\"http://www.baidu.com\">百度</a><img src='https://www.baidu.com/img/bd_logo1.png'/></div>";
mm.IsBodyHtml = true;
SmtpClient sc = new SmtpClient("smtp.qq.com", 587);
sc.Credentials = new NetworkCredential(From,Pwssword);//此处的password参数填刚刚保存的授权码
sc.EnableSsl = true;
sc.Send(mm);

(2)、通过AttachmentBase的属性ContentId和ContentDisposition类来实现内嵌资源,代码如下:

对于文件附件,可以使用 ContentDisposition 的属性来设置文件大小、文件的创建日期、上次读取文件的日期以及上次修改文件的日期。对于所有附件,考虑到附件有可能会存储到接收计算机上,可以设置一个建议的文件名。显示电子邮件的软件可以使用 ContentDisposition 中的信息,按发件人预期的方式呈现电子邮件附件。

通过 ContentDisposition 实例的Inline属性实现邮件内嵌资源。如下:

设置附件的ContentId属性为一个自定义名称。

设置附件的ContentDisposition.Inline属性为true。

在邮件的HTML格式正文中以“cid:自定义名称”的方式引用,比如ContentId设为“face”,那么正文中就以“cid:face”作为其URL路径字符串的替代即可。

关于ContentDisposition类的详细信息,请参考MSDN

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MailMessage mm = new MailMessage();
mm.From = new MailAddress(From, "张三", Encoding.UTF8);
mm.To.Add(new MailAddress(To));
mm.BodyEncoding = Encoding.UTF8;
mm.SubjectEncoding = Encoding.UTF8;
mm.Subject = "this is a test email";
 mm.Attachments.Add(new Attachment(@"C:\Users\Administrator\Desktop\QQ图片20170813165544.png"));
            mm.Attachments[0].ContentId = "TestPic";
            mm.Attachments[0].ContentDisposition.Inline = true;//设置内嵌图片的关键属性
            mm.Attachments[0].NameEncoding = mm.SubjectEncoding = mm.HeadersEncoding = mm.BodyEncoding = Encoding.UTF8;
            mm.Body = string.Format("this is a test body<div><a href=\"http://www.baidu.com\">百度</a><img src='{0}' /><a href='{0}' target='_blank'>点击新窗口打开图片</a></div>", "cid:" + mm.Attachments[0].ContentId);
mm.IsBodyHtml = true;
SmtpClient sc = new SmtpClient("smtp.qq.com", 587);
sc.Credentials = new NetworkCredential(From,Pwssword);//此处的password参数填刚刚保存的授权码
sc.EnableSsl = true;
sc.Send(mm);

(3)、通过AlternateView类和LinkedResource类来实现

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.Net魔法堂:发个带附件的邮件
一、前言                             由于工作需要最近把邮件发送封装成WebService,现在把代码记录在此,以便日后查阅。 二、二话不说写代码                     private void _SendMail(string form, string pw, string subject, string[] to, string[] cc, string body, string attachmentName, byte[] attachment)
^_^肥仔John
2018/01/18
6840
使用.Net发电子邮件小结
电子邮件是通过互联网发出去的,互联网中传输层协议有TCP/IP协议,邮件服务在基于TCP/IP底层协议之上的应用层实现SMTP、POP3、IMAP4等协议,通过这些协议实现了邮件的收发服务。
小蜜蜂
2019/08/06
1.7K0
使用.Net发电子邮件小结
C#邮件发送类 简单实用 可自定义发件人名称
上图看效果 MailHelper: public class MailHelper { public bool SendMail(MailSender sender,out s
晓晨
2018/06/22
1.2K0
VB.NET 发送QQ邮件,可用于发送验证码和批量文件,通知信息
首先打开邮箱的POP3/IMAP/SMTP,获取邮箱授权码,具体操作如下:
办公魔盒
2019/08/28
1.7K0
VB.NET 发送QQ邮件,可用于发送验证码和批量文件,通知信息
【.NET】几行代码实现自动发送邮件功能
前言:邮件自动发送功能应该场景比较多,例如遇到程序bug、或者运行报告等,补获到就发送邮件提醒。或者其他用途。
Wesky
2024/08/13
2020
【.NET】几行代码实现自动发送邮件功能
ASP.NET(C#) 发送邮件帮助类Mailhelper
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; u
KenTalk
2018/09/11
1.4K0
System.Net.Mail.SmtpClient通过SSL/TLS协议发送邮件失败问题解决
通过System.Net.Mail使用SSL协议发送邮件失败并报错 System.Net.Mail.SmtpException: Failure sending mail
KenTalk
2020/03/05
1.8K0
C#进阶-实现邮箱收发功能
在C#中,发送邮件是一项常见的任务,通常用于实现自动化通知、报警和与用户进行交互等场景。C#提供了多种发送邮件的方式,主要方式包括SMTP协议、POP3协议、IMAP协议、Exchange服务器等。使用这些方式,开发人员可以灵活地发送和接收邮件,满足各种应用场景的需求。
Damon小智
2024/03/20
4620
C#进阶-实现邮箱收发功能
MYSQL自动备份并发送邮件工具
最近在开发小程序,由于服务器只有一台,所以不能数据库异机备份,出于数据安全的考虑,就做了一个数据库定时备份并发送邮件到自己的邮箱的小工具,先看下工具界面
code2roc
2023/07/19
3410
MYSQL自动备份并发送邮件工具
Unity 如何在程序中发送Email邮件
发送邮件需要用到System.Net.Mail命名空间下的MailMessage和SmtpClient类,smtp是一种提供可靠且有效的电子邮件传输协议,是建立在FTP文件传输服务上的一种邮件服务。下面封装一个Email类,声明MailMessage和SmtpClient字段:
CoderZ
2022/08/29
9980
Unity 如何在程序中发送Email邮件
.net下发送Email的Helper类一、适用场景二、代码三、调用方法四、结束
前段时间因为业务需要自动给客户发送支持HTML格式的而且带附件的Email,而且使用的还是Office365邮箱,就抽时间看了一下这方面的内容,并写了这个帮助类。 该类是使用的SMTP服务发送Email,可以支持OFFICE365等邮箱,支持SSL、HTML邮件、附件等。目前未启用加密的常规发送和使用Office365邮箱发送都已经测试通过。 该代码目前是使用在.net 4.0环境下,理论上.net 4.0~.net 4.7都可以使用,.net core下没有测试。
徐大嘴
2019/03/21
7330
c# 发送Email的2中方式
我相信大多数人发送邮件使用第二种,但是有时候第二种方式是发不出去的,那么什么情况发布出去呢???
冰封一夏
2019/09/11
5450
结合ABP源码实现邮件发送功能
1. 前言 最近pm临时提出了多种邮件验证操作的需求,因为一时间也没有找到好的邮件收发组件,也抱着研究ABP的心态,就花了几小时时间探究了一下ABP中关于Email的处理和操作。其实邮件操作大多大同小异,这次只是希望介绍一下ABP中实现功能的代码结构而已,以下是具体过程 演示的ABP代码版本为0.9.0.0,不过后面版本对于这部分的修改较少,所以完全不影响之后版本的移植使用 2. 实现过程 ABP的Mail操作放在了Abp.Net.Mail和Abp.Net.Mail.Smtp中,第一步先让我们直接看
潘成涛
2018/01/18
1.2K0
结合ABP源码实现邮件发送功能
使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好。而且开箱即用支持 S/MIME 和 PGP。MimeKit 和 MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本。如果你想做所有与的电子邮件相关的事情,看看 MimeKit 和 MailKit。我保证你不会失望,它支持.NET/Mono的所有平台,包括移动电话、平板等。 使用方法很简单和.NET的SmtpClient 差不多,不过比
张善友
2018/01/29
2.2K0
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/42011431
DannyHoo
2018/09/13
2.2K0
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
补习系列(12)-springboot 与邮件发送
SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议,是发送协议。 它定义了一组从源地址到目的地址传输邮件的规范,并支持在传送过程中通过不同网络主机实现中转及传送。
美码师
2019/01/23
8580
SpringBoot系列(十三)集成邮件服务以及邮件发送的几种方式
SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。
全栈学习笔记
2022/03/31
8680
SpringBoot系列(十三)集成邮件服务以及邮件发送的几种方式
c#发送邮件含附件
在网上巴拉巴拉找个的,然后修改了下,测试可用 using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; using System.Net.Mime; using System.Net; namespace CustomerDetails { public class SendEmail { private MailMessage mailMessage;
冰封一夏
2019/09/10
1.2K0
基于Spring Boot快速实现发送邮件功能
邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。
程序新视界
2020/08/20
1.2K0
邮件实现详解(一)------邮件发送的基本过程与概念
IT可乐
2018/01/04
3.6K0
邮件实现详解(一)------邮件发送的基本过程与概念
推荐阅读
相关推荐
.Net魔法堂:发个带附件的邮件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验