问题标签 [database-mail]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1099 浏览

sql-server - 如何设置对 MSSQL 2005 数据库邮件的访问?

我刚刚在 MSSQL 2005 中设置了数据库邮件。我已经能够从服务器上的管理员帐户并通过 SQL Server 代理作业发送电子邮件。但是,当我尝试通过仅有权访问我们的 Web 应用程序的数据库的登录名发送电子邮件时,我无法发送电子邮件。

设置对数据库邮件的访问的最佳方式是什么?

我有 2 个要发送电子邮件的 senerios。

  1. 通过 SQL Server 代理安排作业以运行存储过程,该过程执行某些过程,然后发送电子邮件。(这不是问题)
  2. 有一个从 Web 应用程序调用的存储过程,该应用程序调用另一个可以发送电子邮件的存储过程。(这是我的权限问题)

可能的解决方案

  1. 我发现授予登录权限的唯一方法是将登录名映射到msdb数据库并授予publicDatabaseMailUserRole。这真的让我很担心,因为我认为这会提供对msdb数据库的很多访问权限。

  2. 将我要发送的电子邮件存储在一个表中,然后让 SQL Server 代理作业每隔一段时间查看该表以发送任何排队的电子邮件。这样,Web 应用程序的数据库登录不会执行 [msdb].[dbo].[sp_send_dbmail] 调用,因此不需要对msdb数据库的任何权限。

还有其他解决方案吗?

0 投票
2 回答
2288 浏览

c# - 使用 C# 通过 DatabaseMail 发送电子邮件

如何在 C# 中使用数据库邮件(集成在 SQL Server 中)发送电子邮件?我找不到有用的文章或可以彻底帮助我的东西。

0 投票
3 回答
476 浏览

sql - 每个结果行的 SQL 执行

我一直在谷歌搜索,但我似乎无法找到答案。我正在尝试在存储过程中使用 SQL Server 2005 中的数据库邮件,其中的想法是为查询中的每一行发送单独的邮件,每封邮件取决于驻留在行中的地址。

例如,假设有 15 - 50 行产品订单,其中包含以下数据:ID、CustomerName、CustomerEmail、ProductName、ProductCategory。每一行都包含客户电子邮件以及产品类别。我需要使用特定于他们自己行的个人数据向每个客户发送一封确认电子邮件,以及根据产品类别将实际订单邮件发送给不同的公司人员。

我怎样才能像这样动态发送数据库邮件?

提前致谢!

编辑 1:数据集等不是一个选项,这必须在 SQL Server 2005 上专门运行。我想我将不得不查看游标。

0 投票
2 回答
328 浏览

sql-server-2005 - 配置数据库邮件设置

如何配置数据库邮件设置并从 Sharepoint 创建的默认数据库实例中的数据库发送邮件,因为在登录 sa 用户后,我无法找到从管理中配置数据库邮件设置的位置。

0 投票
1 回答
319 浏览

.net - 如何在 SQL Server 中配置和运行数据库邮件

如何在 SQL Server 2008 中启用和运行数据库邮件?我知道它需要

  • 启用服务代理
  • 配置 SMTP(需要邮件服务器)
  • 使用配置存储过程

我不知道应用程序和数据库邮件之间的关系是什么。

实际上如何为RollBackCommit Transaction启用数据库邮件?(不适用于所有 SP ,仅适用于其中一些)

更新:数据库邮件是一种自动向您在配置中指定的人发送邮件(或短信)的服务。您可以指定此事件(发送邮件)的触发地点和时间。所以我想看看如何配置它。

0 投票
1 回答
2316 浏览

sql - sp_notify_operator:指定的@operator_name 不存在(但确实存在!)

好的,所以我想我要疯了!这就是我所在的地方。

SQL Server 2008:我已经设置了数据库邮件,并且给自己发送了一封测试电子邮件。很简单,很好用。

我创建了一个运算符,名为“Tom”。我给了它一个电子邮件地址(但没有别的)。

但是,当我运行此命令时:

EXECUTE msdb.dbo.sp_notify_operator @name=N'Tom',@subject=N'Test Database Message',@body=N'Testy Test Test'

...我明白了:

消息 14262,级别 16,状态 1,过程 sp_verify_operator_identifiers,第 51 行 指定的 @operator_name ('Tom') 不存在。

该错误消息是否掩盖了我应该查看的其他内容?SSMS 中肯定有一个运算符,但如果有一个列出运算符的存储过程,我会很乐意运行它以查看它是否真的存在。

我只是有点不知道下一步该去哪里。SQL Server 似乎确信我不存在!

0 投票
1 回答
29486 浏览

sql-server-2008 - 数据库邮件的脚本设置

我已经使用 SQL Server 2008 GUI 在我的测试服务器上设置了数据库邮件配置文件和帐户,现在我想将它们复制到我们的生产数据库中。

有没有办法生成一个脚本来做到这一点?

0 投票
2 回答
2238 浏览

sql - MSDB.dbo.sysmail_faileditems 中没有行

最初,当我尝试查询我需要创建的报告的内容时,我遇到了“无 SELECT 权限”错误。所以我们DatabaseMailUserRole在 MSDB 中授予我的帐户 - 我看到列,但没有我们知道存在的数据。

我缺少什么需要为我的帐户执行的操作才能查看数据?

0 投票
1 回答
7791 浏览

sql-server-2005 - 只有一些电子邮件从 SQL Server 2005 上的 sp_send_dbmail(数据库邮件)成功发送

我想找到sp_send_dbmail在 SQL Server 2005 上使用时发生的事情的答案。我一直在使用谷歌搜索但没有成功,我现在真的不知道该去哪里。

这是场景:

我在我们的 SQL 服务器上设置了一个邮件功能。我在一个表格中有电子邮件地址,在另一个表格中有内容。对于我在表中找到的每个地址,我使用sp_send_dbmail存储过程将新消息编译到该地址。

当我稍后执行执行上述操作的自己的 SP 时(接收电子邮件并将新消息编译给收件人),DatabaseMail90.exe 在服务器上启动,并且正在发送电子邮件。但这就是棘手的地方,因为一些邮件是直接分发的,可能是因为它位于同一个域和网络上。复杂的是,大多数(不是全部)外部邮件在 msdb.dbo.sysmail_mailitems 表中出现错误。但混乱并不止于此。尽管在 msdb.dbo.sysmail_mailitems 表中报告了错误,但某些电子邮件仍在传递。

这是我用来查看已发送消息状态的查询:

我已经配置了数据库邮件,系统参数如下:

  • 帐户重试次数:3
  • 帐户重试延迟(秒):30
  • 最大文件大小(字节):50000000(永远不会这么大,但为了安全起见)
  • 禁止的附加文件扩展名:exe、dll、vbs、js
  • 数据库邮件可执行文件最短生命周期(秒):300
  • 日志记录级别:扩展

我的数据库邮件配置文件是公共的并设置为默认配置文件。我还建立了一个现有的个人资料。

这是执行一切并开始发送邮件的 SP:

所以问题仍然存在。有没有办法让我调整设置以更快地发送电子邮件?而且,真正的问题是,为什么有时发送电子邮件时会出错?它发送到的电子邮件地址没有任何问题。我应该在哪里查找代码或数据库邮件配置中可能出现的错误?你有过这样的经历吗?

msdb.dbo.sysmail_mailitems 表中的错误描述是什么?我的意思是,向外部域报告了错误,但邮件已送达。或者如果邮件没有送达,我应该在哪里查看导致问题的原因。

0 投票
1 回答
6447 浏览

html - 获取 SQL 数据库邮件以格式化具有 2 列的 HTML 表

我正在使用 SQL Server 2005 并且正在发送以 HTML 格式的数据库邮件。我得到了我需要的结果,但我很难按照我想要的方式格式化表格。

正在运行两个单独的 SELECT 语句来填充表行。问题是我希望它们并排显示,因为它们彼此相关,但它们只会在另一个之上显示一个。我曾尝试将它们放入一个更大的表中的两个表中,但它不会将其转移。我已经有 10 年没有使用 HTML 了,所以这可能不仅仅是脚本本身的问题。

这是包含两个 select 语句的 @body 部分: