首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从启用了多因子身份验证的office 365帐户使用VB.NET或C#代码发送电子邮件?

要从启用了多因子身份验证(MFA)的Office 365帐户使用VB.NET或C#代码发送电子邮件,你需要使用Microsoft Graph API。Microsoft Graph API允许你访问Office 365的数据和服务,包括发送电子邮件。

基础概念

  1. Microsoft Graph API:这是一个RESTful web API,它允许开发者访问Microsoft 365中的数据,如邮件、日历、联系人等。
  2. OAuth 2.0:用于授权你的应用代表用户访问其数据。
  3. 多因子身份验证(MFA):一种安全措施,要求用户在登录时提供两个或更多的验证因素。

相关优势

  • 安全性:使用MFA可以大大提高帐户的安全性。
  • 灵活性:通过Microsoft Graph API,你可以从你的应用程序中控制Office 365的功能。
  • 集成能力:可以轻松地将Office 365的功能集成到你的应用程序中。

类型

  • 客户端凭据流:适用于没有用户交互的应用程序。
  • 授权码流:适用于需要用户交互的应用程序。

应用场景

  • 自动化发送电子邮件。
  • 集成Office 365功能到你的应用程序中。

实现步骤

  1. 注册应用程序:在Azure门户中注册你的应用程序,获取客户端ID和客户端密钥。
  2. 获取访问令牌:使用OAuth 2.0授权码流获取访问令牌。
  3. 调用Microsoft Graph API:使用获取到的访问令牌调用Graph API发送电子邮件。

示例代码(C#)

代码语言:txt
复制
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string tenantId = "your-tenant-id";
        string clientId = "your-client-id";
        string clientSecret = "your-client-secret";
        string resource = "https://graph.microsoft.com/";
        string authority = $"https://login.microsoftonline.com/{tenantId}";
        string redirectUri = "https://login.microsoftonline.com/common/oauth2/nativeclient";

        // Step 1: Get authorization code
        string authorizationCode = await GetAuthorizationCode(authority, clientId, redirectUri);

        // Step 2: Get access token
        string accessToken = await GetAccessToken(authority, clientId, clientSecret, authorizationCode, redirectUri);

        // Step 3: Send email using Microsoft Graph API
        await SendEmail(accessToken);
    }

    static async Task<string> GetAuthorizationCode(string authority, string clientId, string redirectUri)
    {
        // Implement OAuth 2.0 authorization code flow to get the authorization code
        // This is a simplified example, in practice you would need to handle the browser redirection and user consent
        return "your-authorization-code";
    }

    static async Task<string> GetAccessToken(string authority, string clientId, string clientSecret, string authorizationCode, string redirectUri)
    {
        using (var client = new HttpClient())
        {
            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("grant_type", "authorization_code"),
                new KeyValuePair<string, string>("client_id", clientId),
                new KeyValuePair<string, string>("client_secret", clientSecret),
                new KeyValuePair<string, string>("code", authorizationCode),
                new KeyValuePair<string, string>("redirect_uri", redirectUri),
                new KeyValuePair<string, string>("resource", resource)
            });

            var response = await client.PostAsync(authority + "/oauth2/token", content);
            var result = await response.Content.ReadAsStringAsync();
            var tokenData = System.Text.Json.JsonDocument.Parse(result).RootElement.GetProperty("access_token").GetString();
            return tokenData;
        }
    }

    static async Task SendEmail(string accessToken)
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var content = new StringContent(@"
            {
                ""message"": {
                    ""subject"": ""Hello"",
                    ""body"": {
                        ""contentType"": ""Text"",
                        ""content"": ""Hello, World!""
                    },
                    ""toRecipients"": [
                        {
                            ""emailAddress"": {
                                ""name"": ""John Doe"",
                                ""address"": ""john.doe@contoso.com""
                            }
                        }
                    ]
                }
            }", System.Text.Encoding.UTF8, "application/json");

            var response = await client.PostAsync("https://graph.microsoft.com/v1.0/me/sendMail", content);
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine("Email sent successfully.");
            }
            else
            {
                Console.WriteLine($"Failed to send email. Status code: {response.StatusCode}");
            }
        }
    }
}

参考链接

常见问题及解决方法

  1. 访问令牌获取失败:确保你的应用程序注册正确,客户端ID和客户端密钥无误。
  2. 权限不足:确保你的应用程序具有发送电子邮件的权限。
  3. MFA问题:确保你的帐户已启用MFA,并且你有正确的认证方式。

通过以上步骤和代码示例,你应该能够从启用了多因子身份验证的Office 365帐户使用VB.NET或C#代码发送电子邮件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

可能是Salesforce与Microsoft Dynamics 365最全面的比较

在新用户初次登录后,每次用户尝试从无法识别的计算机设备登录时,Salesforce都会向用户发送电子邮件发送验证码。用户必须键入验证码才能登录Salesforce。...Microsoft Dynamics 365 Microsoft Dynamics 365用户通过Microsoft Office 365帐户登录。...管理员可以为Office 365管理区域中用户设置多重身份验证。Microsoft Dynamics 365可以与Active Directory同步。...API文档中代码示例是Java和C#,但可以许多客户端语言调用API,包括Ruby,PHP和Perl。...每个组织都有自己定义Email to Salesforce地址,当发送转发此电子邮件地址时,BCC会自动将已发送/已接收电子邮件与Salesforce中具有匹配电子邮件地址潜在客户联系人记录相关联

6.3K40

微软去年拦截了数百亿次暴力破解和网络钓鱼攻击

去年,微软成功拦截了数百亿次针对Office 365和Azure Active Directory (Azure AD) 客户暴力破解和网络钓鱼攻击。...微软负责安全、合规副总裁 Vasu Jakkal 表示,自2021年1月到2021年12月,微软使用 Microsoft Defender for Office 365 阻止了超过256亿次 Azure...其中,多因素身份验证 (MFA) 和无密码身份验证应用,大大提高了攻击者攻击Microsoft 目标帐户门槛。...数据显示,截至2021年12月,在各个行业中,只有22%使用微软云身份解决方案 Microsoft Azure Active Directory (Azure AD) 客户实施了强身份验证保护。...不久之前,微软还发布了告警称,一场活跃多阶段网络钓鱼活动攻击正在袭来,它们利用 Azure AD 将流氓设备注册到目标网络以分发网络钓鱼电子邮件,如果启用了MFA 策略,此类攻击将会被阻止。

66420
  • Azure AD 到 Active Directory(通过 Azure)——意外攻击路径

    底部是“Azure 资源访问管理”切换。那很有意思…。 攻击: 攻击者密码喷洒 Acme Office 365 环境并识别没有 MFA(多因素身份验证全局管理员帐户。...攻击者 Office 365 全局管理员转移到影子 Azure 订阅管理员 根据 Microsoft 文档,将此选项“否”切换为“是”,会将帐户添加到根范围 Azure RBAC 中用户访问管理员角色...或者 GA 会话令牌被盗,因为 GA 在其常规用户工作站上使用其 Web 浏览器(已被盗用)。 2. 攻击者使用帐户进行身份验证,并利用帐户权限创建另一个用于攻击帐户使用受感染帐户。...攻击者会破坏组织全局管理员帐户,因为他们刚刚开始使用 Office 365,或者没有意识到保护 GA 风险。无论哪种方式,GA 帐户都没有被 PIM、条件访问 MFA 锁定。...AD 环境使用伪造 Kerberos TGT 身份验证票证来访问任何资源。

    2.6K10

    如何使用Go365Office365用户进行渗透

    写在前面的话 Go365这款工具旨在帮助广大研究人员针对使用了Office365(现在/即将推出Microsoft365组织和用户执行用户枚举和密码爆破攻击。...Go365使用了login.microsoftonline.com上惟一一个SOAP API节点,而login.microsoftonline.com则是很多其他大部分工具都不会选择使用。...当要求输入一个电子邮件地址和密码时,这个终端节点会响应一个Azure AD认证和授权代码,这个代码接下来会交由Go365处理,处理结果会打印至屏幕输出到文件。...注意事项 此工具可能不适用于所有使用Office365域。 测试表明,它适用于大多数联合域。 即使提供了有效密码,某些域也只报告有效用户,不过不同场景下实验结果可能会不一样。...该工具针对不同域测试表明,在多次密码爆破失败之后,该工具并不会锁定目标帐户不过不同场景下实验结果可能会不一样。 此工具旨在被授权“渗透”目标组织Office365实例安全专业人员使用

    1.3K30

    FireEye发布了检测 SolarWinds审计工具

    与该报告一起发布还有一个名为 Azure AD Investigator 审计工具 ,FireEye 表示该工具可以帮助公司确定 SolarWinds(也被称为 UNC2452)是否在其网络中使用了任何一种相关技术...这使攻击者可以以任何用户身份通过 Federation Services(例如 Microsoft 365认证,而无需该用户密码它们相应多因子认证 在 Azure AD 中修改添加受信任域以添加由攻击者控制...这使攻击者可以为任意用户伪造令牌,被称为 Azure AD 后门 攻陷高权限用户(例如,全局管理员应用程序管理员) Microsoft 365 同步本地用户帐户凭据 通过向其添加恶意凭证来劫持现有的...Microsoft 365 应用程序,以便使用分配给该应用程序合法权限。...例如能够绕过双因子认证读取电子邮件、以任意用户身份发送电子邮件、访问用户日历等 FireEye 表示:“虽然 UNC2452 表现出一定程度技术复杂性和逃避检测性,但观察到技术仍然是可检测到”。

    54920

    云钓鱼:新伎俩和“皇冠上宝石”

    这种前所未见网络钓鱼攻击现在正蓬勃发展,攻击者利用了BYOD(自带设备)概念,通过使用被盗凭据进行设备注册,从而可以随时随地访问云身份验证。...然而,第二阶段目标并非直接攻击受害者,而是以受害者名义在流氓设备上创建一个新Office 365帐户。...虽然名字中使用了SMS,但这种攻击也可以发生在其他通讯平台上,如Facebook messengerWhatsApp。...开发人员帐户通常带有GitHub其他代码存储库访问权限。 Dropbox & Uber 2022年9月,优步披露,黑客窃取了约5700万名客户和司机个人信息。...他们还可能在受感染用户邮箱中创建规则,删除电子邮件,将其移动到不太可见文件夹(如RSS文件夹),电子邮件转发到外部帐户。 邮件可以通过转发规则手动自动转发。

    81930

    Azure Active Directory 蛮力攻击

    用户浏览器尝试以登录用户身份进行身份验证并请求票证授予票证 (TGT)。 本地 AD 将 TGT 发送到用户浏览器。 用户浏览器本地 AD 请求自动登录访问,并提供 TGT 作为身份证明。...Autologon 使用 AZUREADSSOACC 计算机帐户密码哈希解密 ST,为用户颁发 DesktopSSOToken 访问令牌,并通过对 Azure AD 重定向请求将此令牌发送到用户浏览器...image.png image.png 如果身份验证成功,则将 DesktopSSOToken 访问令牌发送到 Azure AD。 表 1 列出了可能返回错误代码。...并非所有错误代码都表示暴力尝试。例如,错误 AADSTS50053 表示用户名和密码正确,但帐户已被锁定。...威胁参与者可以利用任何 Azure AD Microsoft 365 组织中自动登录用户名混合端点,包括使用直通身份验证 ( PTA ) 组织。没有 Azure AD 密码用户不受影响。

    1.4K10

    安全威胁情报周报(01.18-01.24)

    能源威胁情报 黑客绕过 Microsoft Office 365 高级威胁防护对企业进行钓鱼攻击,能源行业位居受害榜第二 Check point 联合 Otorio 对2020年8月一起全球性大规模钓鱼攻击活动展开调查...攻击者利用伪装成 Xerox 扫描通知钓鱼邮件诱使用户打开一个恶意 HTML 附件,恶意附件将会引导用户输入 Microsoft 账号密码,然后将账号及密码发送到攻击者指定地址,并重定向至真正微软官网...攻击过程成功绕过了 Microsoft Office 365 高级威胁防护(ATP)过滤系统,并窃取了上千名企业员工凭证。...一旦攻击者获得了企业网络访问权限,攻击者可以对企业系统造成各种各样破坏,比如植入恶意软件,筛选公司数据以搜索私有数据,或者获取高管帐户凭证,进行商务电子邮件欺诈(BEC)。...Raindrop 被修改版 7-Zip 源代码编译为 DLL 文件,7-Zip 代码使用,旨在隐藏恶意功能。每当加载 DLL 时,它都会执行恶意代码 DllMain 子例程中启动一个新线程。

    1.2K40

    WhatsApp 新骗局曝光,可劫持用户账户

    整个攻击过程极为简单,攻击者打电话给用户,诱导他们拨打以40567开头电话号码。一旦接通后,只需要几分钟用户就对账户失去了控制权,攻击者将会接管他们账户。...由于电话正忙,电话被定向到攻击者电话,从而使他能够控制受害者 WhatsApp 帐户。这就是攻击者在注销时获得对受害者 WhatsApp 帐户控制权方式。...尽管该骗局目前针对是印度 WhatsApp 用户,但 Sasi 解释说,如果黑客可以物理访问手机并使用此技巧拨打电话,攻击者可以破解任何人 WhatsApp 帐户。...云电子邮件安全公司 Armorblox 研究人员发现了攻击者针对 Office 365 和 Google Workspace 账户进行攻击恶意活动,在该活动中使用了与道路安全中心相关域名来发送电子邮件...攻击者诈骗策略包括在那些发送电子邮件中获得用户信任来进行社会工程学攻击;通过伪造 WhatsApp 合法品牌,利用合法域名来发送电子邮件

    2.7K20

    微软发现与伊朗相关APT组织,瞄准美国和以色列国防公司

    微软报告发现了一个恶意活动组织,其目标是攻击美国和以色列国防技术公司Office 365用户。...“只有不到20个Office 365用户被入侵,但DEV-0343仍然在不断改进技术以提高攻击完成度。”微软表示,启用了多因素认证(MFA)Office 365帐户则未被密码喷射攻击攻破。...他们通常针对组织内数十到数百个帐户,并对每个帐户进行数十到数千次枚举。平均而言,针对每个组织攻击使用了150至1000多个Tor代理IP地址。”...(最常见)Autodiscover端点 使用类似于 “o365spray “工具枚举/密码喷射工具 使用Autodiscover来验证账户和密码 观察到密码喷洒活动通常在UTC 4:00:00和11...Office 365用户,请参阅多因素认证支持。 对于消费者和个人电子邮件账户,请参阅如何使用两步验证。 微软鼓励所有客户下载和使用无密码解决方案。

    50830

    云攻击增长65%,中国成第二大来源国

    云应用程序攻击使用智能驱动蛮力技术(破解密码)和复杂钓鱼方法,诱使受害者点击并暴露他们身份验证凭证,从而侵入包括Microsoft Office 365和谷歌G Suite在内云应用程序。...强行云应用攻击 基于IMAP密码喷涂攻击是最流行和广泛技术,用于破坏Microsoft Office 365帐户。...在同一时间通过多个不同帐户,网络罪犯试图共享信息最近泄露凭证时,这些攻击尤为频发。 大多数强力云应用攻击源自中国(53%),其次是巴西(39%)和美国(31%)。...在接受调查Microsoft Office 365用户中,超过25%用户遇到过未经本人授权强行登陆,而超过60%用户则成为主动攻击目标。总体而言,2019年第一季度成功率为44%。...攻击者通常会修改电子邮件转发规则,或者设置电子邮件委托来维护访问权限。他们还将使用引人注目的V**服务来绕过条件访问和基于地理位置身份验证

    51930

    未检测到 Azure Active Directory 暴力攻击

    用户浏览器尝试以登录用户身份进行身份验证并请求票证授予票证 (TGT)。 本地 AD 将 TGT 发送到用户浏览器。 用户浏览器本地 AD 请求自动登录访问,并提供 TGT 作为身份证明。...Autologon 使用 AZUREADSSOACC 计算机帐户密码哈希解密 ST,为用户颁发 DesktopSSOToken 访问令牌,并通过对 Azure AD 重定向请求将此令牌发送到用户浏览器...image.png image.png 如果身份验证成功,DesktopSSOToken 访问令牌将发送到 Azure AD。 表 1 列出了可能返回错误代码。...Microsoft指出,只有早于 Office 2013 2015 年 5 月更新旧版 Office 客户端才需要 usernamemixed 终结点。 这种利用不仅限于使用无缝 SSO 组织。...威胁参与者可以利用任何 Azure AD Microsoft 365 组织中自动登录 usernamemixed 终结点,包括使用直通身份验证 ( PTA ) 组织。

    1.2K20

    黑客正使用AiTM攻击监控企业高管微软 365帐户

    帐户,其中包括受多因素身份验证 (MFA) 保护帐户。...在Mitiga例举一个攻击样例中,对公司高管攻击始于一封看似来自 DocuSign 网络钓鱼电子邮件,(DocuSign 是一种在企业环境中广泛使用电子协议管理平台),虽然电子邮件没有通过 DMARC...【发送给目标高管网络钓鱼邮件】 攻击者被认为使用网络钓鱼框架(例如 Evilginx2 代理)来进行所谓中间人攻击 (AiTM) 。...【攻击者将手机添加为新 MFA 设备】 由于有效Cookie可能会过期被撤销,因此攻击者会添加新 MFA 设备并将其链接到被破坏 Microsoft 365 帐户,这一举动不会生成任何警报需要与原有帐户所有者进行进一步交互...在 Mitiga 看到案例中,攻击者添加了一部手机作为新身份验证设备,以确保他们可以不间断地访问受感染帐户

    1.1K20

    如何在微软官网以正版方式下载、安装和激活Microsoft Office办公软件

    本文将指导您完成不同过程,购买Microsoft Office 2021许可证到在您机器上激活它。如果你想安装最新Office套件,您就来对地方了。...让我们讨论一下使用Office 2021好处,而不是订阅Microsoft 365Office 2021产品密钥您还必须具有相应版本Office套件有效产品密钥。...点击Microsoft Office产品密钥获取Microsoft Office有效产品密钥,再继续后面的步骤。Office Professional Plus需要通过工作学校帐户购买。...您可以使用支付宝微信支付购买产品密钥。产品密钥将通过电子邮件私信发送给您。满足这些前提条件后,您现在可以开始下载和安装Office 2021套件。...1.单击打开Setup.office.com并点击“登录”按钮。图片若自己没有Microsoft账户,请参阅 如何创建Microsoft帐户 自己先注册一个微软账户再来进行后面的步骤。

    7.1K00

    Active APT

    一种工具是针对 Microsoft Outlook VBA 宏,它使用目标的电子邮件帐户向受害者 Microsoft Office 通讯录中联系人发送鱼叉式钓鱼电子邮件。...在过去几个月里,Gamaredon 使用了许多不同编程语言, C# 到 VBScript、批处理文件和 C/C++。...C# 编译器模块 这个 .NET 可执行文件与 Gamaredon 小组使用许多其他工具类似,使用了诸如垃圾代码插入和字符串混淆之类混淆技术。它在其主体中包含下载器 base64 编码源代码。...模块字符串存储在其 .data 部分中,使用简单 XOR 密钥进行加密。它还能够其 C&C 服务器下载和执行任意代码C# 这是 C/C++ 版本 C# 重新实现。...一些 C# 编译器模块示例中包含代码中留下了注释,或者 Outlook VBA 模块生成电子邮件俄语编码错误,这表明在发布和使用它们许多工具之前没有进行严格审查测试在野外。

    8K00

    PwnAuth——一个可以揭露OAuth滥用利器

    OAuth 2.0提供了几种不同授权“权限类型”,以适应用户及与之交互不同应用程序。为了本文目的,我们对“授权代码”权限类型感兴趣,该权限类型由实现OAuthWeb应用程序使用。...访问令牌可以在设定时间段内使用API资源访问用户数据,而无需资源所有者采取任何进一步行动。...虽然任何允许OAuth应用程序云环境都可以成为目标,但是PwnAuth目前使用一个模块来支持恶意Office 365应用程序,捕获OAuth令牌并使用捕获令牌与Microsoft Graph API...Office 365模块本身可以进一步扩展,但目前提供以下功能: · 阅读邮件 · 搜索用户邮箱 · 读取用户联系人 · 下载消息和附件 · 搜索OneDrive并下载文件 · 代表用户发送消息 界面设计很直观和友好...目前有一个脚本可以调查Office 365占用者并计划添加其他云环境。 六、总结 OAuth滥用攻击是一种危险且非传统网络钓鱼技术,攻击者可利用此技术获取企业机密数据。

    1.7K20

    美国大学遭受到针对Office 365账户钓鱼攻击

    据BleepingComputer网站报道,一些网络钓鱼攻击者正通过假冒美国大学网站登录页面,骗取学生和教职人员Office 365账号密码。...这些钓鱼活动始于一封电子邮件,攻击者充分利用了疫情环境下人们焦虑情绪,伪装成有关最新奥密克戎(Omicron)变体、COVID-19 测试结果等信息,利用受害者点击邮件中HTM附件,将他们引导至由攻击者精心准备虚假学校网站登录页面...有时这些网站会是合法WordPress站点,只是被攻击者入侵并利用,因此当受害者登陆时,安全软件电子邮件保护工具不会发出警报。...为了绕过目标大学登录页面上 MFA(多因素身份验证)保护,攻击者还创建了欺骗双重MFA页面的虚假页面,以骗取发送给受害者手机验证码。一旦完成上述操作,攻击者就能成功获得受害者账户控制权。...在获取受害者Office 365账户后,攻击者可访问相应电子邮件账户,向其他人发送消息,以进一步进行网络钓鱼。

    61530

    2017国外10大云故障盘点:亚马逊、Facebook、IBM等

    GitLab,1月31日 GitLab广受欢迎在线代码库GitLab.com遭遇了18个小时服务中断,最终还是没有完全修复。...社交媒体巨头Facebook随后解释说,有功能将会防范黑客发送给用户一个恢复屏幕,让人感觉有人登录了他们帐户,受影响用户会被阻止立即重新登录。 AWS,2月28日 这是一次震动整个业界故障事件。...调查显示,该员工使用既定步骤,试图关闭少量托管了计费流程子系统服务器。...微软Office 365,3月21日 由于用户身份验证问题,导致多个微软企业和消费级云服务(包括Office 365存储和电子邮件服务)无法使用。...访问存储块出现问题,当天中午开始引起人们注意,并在东部时间下午1点前得到控制。 微软Azure,9月29日 当天欧洲客户无法使用微软Azure公有云中一些服务长达7个小时。

    1.3K40

    攻击者正冒充美国政府机构骗取承包商Office账户

    此前,PDF 曾经包含有关如何投标的详细说明,其中包含过多技术信息,而现在,这些信息已被简化,并在显要位置显示指向网络钓鱼页面的链接。...例如由威斯康星州交通部发送“诱饵”将带有WisDOT签名。...在钓鱼网站域名方面,除了显示.gov冒充政府机构外,攻击者现在还使用长域名,如transportation.gov bidprocure.secure akjackpot.com,以便在无法URL栏里显示完整链接移动浏览器中打开时看起来像是合法链接...在试图诱骗访问者输入其 Microsoft Office 365 帐户凭证网络钓鱼页面上,攻击者现在还添加了验证码识别步骤,以确保他们没有采用机器人输入。...【在窃取凭证之前添加了验证码识别步骤】 在这类钓鱼攻击事件中,使用电子邮件、PDF和网站基本上都是照抄真实招标文件和国家招标门户网站实际内容,因此很难看出欺诈痕迹,唯一防御措施是除了检查内容本身外

    61640

    最新攻略:免费申请 Office365 开发者帐号,带25帐户E3企业版 ,终生可续

    这个试用订阅是全局管理,Office 365 E3 级帐户,能够支持 Office 桌面版,可创建25个账号,每个账号可同时在6台电脑上使用!...(1TB 用于管理员帐户,5TB 用户帐户用于 24 个用户) 就在本月(2019年4月),Office 365 开发者社区成员正式突破12万人,并仍在以每月1万人速度在增长,也是为了庆祝这一里程碑,...在右上角,选择登录以使用Microsoft帐户启用Azure Active Directory电子邮件登录。...在Office 365开发人员计划首选项页面上,告诉我们您首选项,以便我们可以个性化您体验,包括: 你工作行业。 您有兴趣开发应用程序解决方案类型。 您感兴趣产品,技术和编程语言。...这是微软 Office 365 面向开发者提供免费订阅,是不能应用于企业、个人商业使用,理论上只能用于开发测试使用,请大家合理使用

    30.1K42
    领券