.Net Core中使用是SQL Server的邮件发送功能
.Net Core中使用是sqlserver的邮件发送功能
- 准备需求
- 启用SQL Server的电子邮件功能
- 检查和测试
- 在.net Core中调用
在sqlsrver的管理中有一个数据库邮件功能,再此可以使用sqlserver来自动发送一些邮件,但是有一些需要插入附件的邮件则需要使用程序代码来解决,下面就是使用C#来调用sqlserver的邮件发送功能的方法.
准备需求
-
SQL Server 数据库 版本不限
-
Visual Stuail 版本不限
-
smtp服务器和账号密码
如果没有可以使用QQ邮箱的smtp服务器,具体配置看这篇文章Java邮件发送
启用SQL Server的电子邮件功能
-
在使用sqlserver的电子邮件发送功能之前,先确保在sqlserver中已经启用了电子邮件功能,可以使用以下命令查询:
SELECT * FROM sys.configurations WHERE name = 'Database Mail XPs'如果返回结果为
0,则需要启用电子邮件功能.可以使用以下命令启用:sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'Database Mail XPs', 1 GO RECONFIGURE GO -
创建一个
SMTP配置文件以用于电子邮件发送.可以使用一下命令创建SMTP配置文件EXECUTE msdb.dbo.sysmail_add_account_sp@account_name = 'MyEmailAccount',@email_address = 'myemail@example.com',@display_name = 'My Name',@mailserver_name = 'smtp.example.com',@port = 25, -- 或者其他端口号@username = 'myusername',@password = 'mypassword',@use_default_credentials = 0 -- 如果SMTP服务器需要身份验证,请将此设置为0请注意,如果SMTP服务器需要身份验证,请提供@username和@password参数。
-
创建一个
电子邮件配置文件.可以使用一下命令创建:EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'MyEmailProfile', @description = 'My Email Profile' -
将SMTP配置文件添加到电子邮件配置文件中。可以使用以下命令将SMTP配置文件添加到电子邮件配置文件中:
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp@profile_name = 'MyEmailProfile',@account_name = 'MyEmailAccount',@sequence_number = 1
检查和测试
如果已经完成以上步骤则运行以下语句:
SELECT name FROM msdb.dbo.sysmail_profile;
此查询将返回所有已定义的电子邮件配置文件的名称。如果未定义任何配置文件,则将返回空结果集。
如果您没有在SQL Server中配置电子邮件,则不会看到任何结果。要配置电子邮件,请使用SQL Server Management Studio或SQL Server Management Objects (SMO)等工具,或者参考Microsoft官方文档以了解如何配置电子邮件。
使用如下语句调用发送邮件的功能
EXCE msdb.dbo.sp_send_dbmail@profile_name '', -- 一个字符串值,表示要使用的电子邮件配置文件的名称.必需@recipients '', --字符串,收件人地址,多个地址用';'分隔.必需@subject '', --字符串,邮件主题.必需@body '', -- 字符串,邮件正文.必需@file_attachments '', --字符串,附件文件的路径(sqlserver所在服务器的绝对路径),多个文件用分号分隔.可选@query '', -- 字符串,表示在邮件正文中包含的SQL查询.可选@execute_query_database '', -- 字符串,执行查询的数据库名称.可选@attach_query_result_as_file 0, -- bit类型值,表示是否将查询结果作为附件附加到邮件中.如果为1,则必须指定`@query`和`@execute_query_database`参数.可选@query_result_width 256, -- 整数,表示查询结果作为附件添加到邮件中时列的宽度,默认256.可选@query_result_width '', --字符串,表示查询结果作为附件添加到邮件中时列的分隔符.默认制表符.可选@exclude_query_output '', -- 一个bit类型的值,表示是否从邮件正文中排除查询结果。默认为0。可选参数。@mail_priority '', -- 一个整数值,表示邮件的优先级。可以是1(最低),3(普通)或5(最高)。默认为3。可选参数。@mail_body_format '', -- 一个字符串值,表示邮件正文的格式。可以是TEXT或HTML。默认为TEXT。可选参数。
在.net Core中调用
实际原理很简单,就是使用数据库服务来调用sp_send_dbmail这个存储过程.
using System.Data.SqlClient;public void SendEmail()
{string connectionString = "Data Source=server_name;Initial Catalog=database_name;User ID=user_name;Password=password";string recipient = "recipient@example.com";string subject = "Test Email";string body = "This is a test email.";using (SqlConnection connection = new SqlConnection(connectionString)){SqlCommand command = new SqlCommand();command.Connection = connection;command.CommandType = System.Data.CommandType.StoredProcedure;command.CommandText = "msdb.dbo.sp_send_dbmail";command.Parameters.Add("@profile_name", System.Data.SqlDbType.VarChar, 128).Value = "MyEmailProfile";command.Parameters.Add("@recipients", System.Data.SqlDbType.VarChar, -1).Value = recipient;command.Parameters.Add("@subject", System.Data.SqlDbType.VarChar, 255).Value = subject;command.Parameters.Add("@body", System.Data.SqlDbType.VarChar, -1).Value = body;connection.Open();command.ExecuteNonQuery();}
}
相关文章:
.Net Core中使用是SQL Server的邮件发送功能
.Net Core中使用是sqlserver的邮件发送功能准备需求启用SQL Server的电子邮件功能检查和测试在.net Core中调用在sqlsrver的管理中有一个数据库邮件功能,再此可以使用sqlserver来自动发送一些邮件,但是有一些需要插入附件的邮件则需要使用程序代码来解决,下面就是使用C#来调用s…...
Nginx优化服务和防盗链
Nginx优化服务和防盗链一、长连接1、修改主配置文件2、测试3、在主配置文件添加4、验证二、Nginx第三方模块1、开源的echo模块2、查看是否成功3、加echo模块步骤4、网页测试验证三、搭建虚拟主机1、编译安装好nginx后,对主配置文件进行修改2、创建文件3、验证四、防…...
B树与B+树
认识了解MySQL中的B树B树引出什么是B树什么是B树B树的优点B树引出 在MySQL中,如果我们设置了主键, 那么对于该列表中的数据就有了一个索引,插入表中数据的主键值不能重复,而且不能为空. 那当我们插入数据的时候, 它是如何通过索引来判断主键值是否重复的呢? 我们想到它肯定是…...
QEMU网络配置
文章目录1. 前言2. 测试环境3. 配置步骤3.1 host 配置3.1.1 检查 host 对 TUN/TAP 和 网桥的支持情况3.1.2 网桥一端的建立:创建网桥设备,并添加 host 网卡到网桥3.1.3 网桥另一端的建立:TUN/TAP 配置3.2 guest 端的配置4. 参考链接1. 前言 …...
windows安装tomcat
这里写自定义目录标题tomcat官网下载安装包并解压环境变量配置启动tomcat访问http://localhost:8080/修复启动出现乱码问题tomcat官网下载安装包并解压 环境变量配置 系统环境变量新增: 变量名:CATALINA_HOME 变量值:tomcat的安装目录 编辑…...
刷题记录:牛客NC23051华华和月月种树 树链剖分+离线加点
传送门:牛客 题目描述: 华华看书了解到,一起玩养成类的游戏有助于两人培养感情。所以他决定和月月一起种一棵树。因为华华现在也是信息学高手了,所以他们种的树是信息学意义下的。 华华和月月一起维护了一棵动态有根树,每个点有一个权值。刚…...
年薪20W软件测试工程师必备的6大技能(建议收藏)
软件测试 随着软件开发行业的日益发展,岗位需求量和行业薪资都不断增长,想要入行的人也是越来越多,但不知道从哪里下手,今天,就给大家分享一下,软件测试行业都有哪些必会的方法和技术知识点,作…...
【存储】RAID2.0+、多路径技术、磁盘可靠性技术
RAID2.0RAID 2.0技术RAID技术发展RAID 2.0软件逻辑对象RAID 2.0基本原理硬盘域Storage Pool & TierDisk Group(DG)LD(逻辑磁盘)Chunk(CK)Chunk Group(CKG)ExtentGrainVolume &am…...
Vue 2
文章目录1. 简介2. 第一个Vue程序3. 指令3.1 判断循环3.2 操作属性3.3 绑定事件3.4 表单中数据双向绑定3.5 其他内置指令3.6 自定义指令4. 组件4.1 全局注册4.2 局部注册4.3 组件通讯4.4 单文件组件5. 组件插槽5.1 单个插槽5.2 具名插槽5.3 作用域插槽6. 内置组件6.1 component…...
Ubuntu 安装 Docker Engine
【参考】Install Docker Engine on Ubuntu | Docker Documentation: https://docs.docker.com/engine/install/ubuntu/ 【参考】Docker CE 镜像源站-阿里云开发者社区 https://developer.aliyun.com/article/110806 【规范】模仿 Docker 文档,Ubuntu, Docker 首字母…...
SpringBoot入门 - 添加内存数据库H2
上文我们展示了通过学习经典的MVC分包结构展示了一个用户的增删查改项目,但是我们没有接入数据库;本文将在上文的基础上,增加一个H2内存数据库,并且通过Spring 提供的数据访问包JPA进行数据查询。准备知识点在介绍通过Spring JPA接…...
高质量数字化转型创新发展大会暨中国信通院“铸基计划”年度会议成功召开
2023年3月3日,由中国信通院主办的高质量数字化转型创新发展大会暨中国信通院“铸基计划”年度会议在北京成功召开。本次大会深度展示了中国信通院在数字化领域的工作成果,并全面展望了2023年行业的数字化发展趋势。同时,大会发布了中国信通院…...
2023年如何通过软考初级程序员?
初级的考试难度不大,稍微有点编程基础,认真备考应该没什么大问题。 先清楚大纲: 高效备考!理清考点,针对性复习 科目一:综合知识 75道单项选择题,1题1分,时长150分钟;…...
视频自动播放的实现与问题解决
一、前言 页面加载一个视频并且自动播放,这个需求看起来非常简单,实现起来感觉也非常简单;但是,实际做起来还是有几处容易产生问题的地方卡住进度。本文讨论基于Vue3的项目在实现页面加载视频后的自动播放遇到的几个问题。 二、页面实现 页面实现非常简单。在页面上放置一个…...
ThreadLocal 理解及面试
一、ThreadLocal 引用关系 图解关系说明: 每个线程拥有自己的 ThreadLocalMap 属性;ThreadLocalMap 的存储结构为 Entry[] 数组;Entry的Key是ThreadLocal类型且弱引用指向ThreadLocal对象,Value是我们自己定义的泛型值对象&#…...
巾帼绽芬芳 一起向未来(中篇)
编者按:为了隆重纪念纪念“三八”国际妇女节113周年,快来与你全方位、多层次分享交流“三八”国际妇女节的前世今生。分上篇(节日简介、节日发展和节日意义)、中篇(节日活动宗旨和世界各国庆祝方式)和下篇&…...
Qt学习2-Qt Creator新建项目小tips(哔站视频学习记录)
放送两个小tips: 1、MinGW和MSVC的区别 QT学习笔记(二):QT MinGW 和 MSVC 编译方式_Leon_Chan0的博客-CSDN博客 2、如何安装QT对应版本的MSVC (1)问题描述:Qt5.12.8支持MSVC2015和MSVC2017,但是系统安装的是Visual…...
React-高阶组件
认识高级组件 高阶函数的维基百科定义:至少满足以下条件之一 1、接受一个或多个函数作为输入; 2、输出一个函数; JavaScript中比较常见的 filter、map、reduce 都是高阶函数 那么说明是高阶组件呢? 高阶组件的英文是 Higher-Order Components,简称为 HOC;官方的…...
python学习——【第一弹】
前言 Python是一种跨平台的计算机程序设计语言,是ABC语言的替代品,属于面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 从这篇…...
数据结构——链表讲解(1)
作者:几冬雪来 时间:2023年3月3日 内容:数据结构链表讲解 目录 前言: 链表的概念: 1.为什么要有链表: 2.链表的运行原理: 3.链表的形态多少: 4.单链表的代码书写࿱…...
为AI编程助手注入Go语言最佳实践:golang-skills技能包实战指南
1. 项目概述:为AI编程助手注入Go语言“肌肉记忆” 如果你和我一样,日常开发重度依赖像Cursor、Claude Code这类AI编程助手,那你肯定也遇到过类似的困扰:生成的Go代码虽然语法正确,但总感觉“味儿”不对。要么是错误处理…...
西门子S7-300/400跨网段数据交换:DP/DP Coupler模块的Step7组态避坑指南
西门子S7-300/400跨网段数据交换实战:DP/DP Coupler组态深度解析与故障排查 在工业自动化系统中,多套PLC之间的数据交互是常见需求。当这些PLC分布在不同Profibus-DP网络时,西门子DP/DP Coupler模块成为实现跨网段通讯的关键组件。然而&#…...
如何免费获取B站8K高清视频:哔哩下载姬完整使用教程
如何免费获取B站8K高清视频:哔哩下载姬完整使用教程 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等…...
规划求解(Solver)实战:利用Excel的Solver工具进行投资组合优化
投资界有句老话:"别把鸡蛋放在一个篮子里。"但很少有人告诉你后半句:“每个篮子放多少鸡蛋,才是大学问。“Solver就是投资组合的"营养师”,帮你配出最佳"营养比例”。就像投资界的红绿灯,约束条件告诉你什么可以做,什么不可以碰。 一、什么是规划求解…...
GPU硬件操作强度与LLM推理效率优化实践
1. 硬件操作强度(HOI)与LLM推理效率的深度解析在GPU加速的大型语言模型推理场景中,我们常常遇到一个看似矛盾的现象:计算单元利用率不足的同时,显存带宽却成为瓶颈。这种现象的根源在于硬件操作强度(Hardwa…...
独立开发者实战:AI编程的泥泞战壕与生存指南
1. 从“氛围编程”到真实战场:一个独立开发者的自白如果你最近也在关注独立开发或者AI编程工具,那你一定听过“氛围编程”这个词。它听起来很酷,对吧?仿佛你只需要对着AI描述一下心中的“氛围感”,一个完美的应用就能应…...
Godot弹幕游戏开发利器:BulletUpHell插件核心功能与实战指南
1. 项目概述:一个为弹幕地狱游戏而生的强大引擎如果你正在用Godot引擎开发一款弹幕射击游戏(也就是我们常说的“弹幕地狱”或“STG”),并且正在为如何高效、灵活地生成成千上万颗轨迹各异的子弹而头疼,那么你很可能需要…...
基于Intelli框架构建智能体应用:从核心原理到电商客服实战
1. 项目概述:从“智能节点”到“智能体”的进化 最近在开源社区里,一个名为 intelligentnode/Intelli 的项目引起了我的注意。乍一看这个名字,你可能会和我最初一样,把它理解为一个“智能节点”框架。但深入探究其代码仓库和设计…...
AI代理治理零风险上线:asqav观察模式与渐进式集成实践
1. 项目概述:在AI代理上线后,如何安全地引入治理机制你花了好几周时间,终于把那个AI代理流水线给搭起来了。从LangChain的链式调用,到精心设计的工具函数,再到与外部API的集成,每一个环节都调试得服服帖帖。…...
004、TinyML技术栈全景图:从模型到部署
004 TinyML技术栈全景图:从模型到部署 去年冬天调试一个智能门磁项目,板子是STM32L4,Flash只有256KB。模型在PC上跑F1值0.97,烧进去直接死机——不是推理结果不对,是内存分配直接溢出。我盯着map文件看了三个小时,最后发现是TensorFlow Lite Micro的arena大小设错了,多…...
