标签: database-mail

用户对数据库邮件的响应

我目前正在对应用程序进行一些高级规划。bcp 导入完成后,我将使用数据库邮件发送电子邮件。

我希望电子邮件为收件人提供选项或过滤器。他们的选择将决定启动哪些特定的 SQL 脚本。

例如:

来自:database@mail.com

至:henry@mail.com

导入已完成,您想:

+------------+---------+
|  Update    |   Find  |
+------------+---------+
Run Code Online (Sandbox Code Playgroud)

我的直觉是我可以选择 mailto 链接,以填充回复电子邮件的正文。但是我一直无法找到有关在收到电子邮件时触发警报的任何资源。事实上,我在下面找到的图表告诉我,您实际上无法回复数据库邮件:

在此处输入图片说明

有没有人做过这样的项目?

sql-server database-mail

3
推荐指数
1
解决办法
198
查看次数

如何识别默认邮件配置

在 SQL Server 中,我们可以设置多个电子邮件配置,其中只有一些设置为默认值。

我尝试使用以下查询来获取帐户列表:

select *
from msdb.dbo.sysmail_profile p 
    join msdb.dbo.sysmail_profileaccount pa on p.profile_id = pa.profile_id 
    join msdb.dbo.sysmail_account a on pa.account_id = a.account_id 
    join msdb.dbo.sysmail_server s on a.account_id = s.account_id
Run Code Online (Sandbox Code Playgroud)

有什么方法可以识别默认邮件配置文件吗?

sql-server sql-server-2012 database-mail

3
推荐指数
1
解决办法
3063
查看次数

通过插入触发器安全地发送数据库邮件

到目前为止,我已经花了大约 30 个小时努力sp_send_dbmail去上班。我终于得到了一些工作,但我严重怀疑它的安全性。我想知道一种更好但快速且易于设置的方法(此时我的时间受到严重限制),以及“理想”(最佳实践)解决方案。

当前 SQL Server 2005 配置

- `After Insert` Trigger on table executes `sp_send_dbmail`
- Database Mail SMTP Account setup (with successful mail test)
- Database Mail Profile setup (with "Public Profile" ticked)
- "guest" account added to "DatabaseMailUserRole"
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章提出了“正确”的解决方案,我阅读了这篇文章,在那里我发现这是一个非常复杂的解决方案,似乎有太多可能出错的事情,更不用说难以维护了。

我对替代解决方案的想法是这些。

1. Setup an Application Role in msdb (this would be my first time using one
    and not even sure if it IS a solution :P), and use it to ensure that …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2005 security database-mail

2
推荐指数
1
解决办法
1804
查看次数

您可以拥有多个 Oracle ACL 文件吗?

我有一个需要通过 Oracle 触发器发送电子邮件的应用程序。我知道在 Oracle 11g 中,您必须有一个 ACL 文件才能授予某些模式访问网络的权限。我的计划是为每个需要访问网络的用户创建一个单独的 ACL 文件,然后使用以下查询检查它是否已正确创建:

SELECT * FROM DBA_NETWORK_ACLS;
Run Code Online (Sandbox Code Playgroud)

但是,似乎此查询只返回了一条记录 - 始终是创建的最新 ACL。这是否意味着您只能拥有一个 ACL?如果是这样,大概这意味着在客户端的服务器上安装这个应用程序时,我必须只向他们现有的 ACL 添加权限,而不是尝试创建一个新的?

谢谢!

更新

这些是我正在使用的命令:

--create ACL for USER1
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(ACL => 'testacl1.xml', 
                                  DESCRIPTION => 'ACL',
                                  PRINCIPAL   => 'USER1',
                                  IS_GRANT    => TRUE,
                                  PRIVILEGE   => 'connect');
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL => 'testacl1.xml',
                                     PRINCIPAL => 'USER1',  
                                     IS_GRANT  => TRUE,  
                                     PRIVILEGE => 'resolve'); 
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(ACL => 'testacl1.xml', host => '*'); 

--create ACL for USER2
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(ACL => 'testacl2.xml', 
                                  DESCRIPTION => 'ACL',
                                  PRINCIPAL   => 'USER2',
                                  IS_GRANT    => TRUE,
                                  PRIVILEGE   => 'connect'); …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 database-mail

2
推荐指数
1
解决办法
7263
查看次数

如何找到发送特定电子邮件的工作?

我有一份工作向一组用户发送不相关的电子邮件。

电子邮件的标题是Staging -> [AUPAIR] arrivalDate trigger issue

当我使用上面的标题查询 msdb 数据库中的作业表时,我没有得到答案:

USE [msdb]
GO
SELECT    j.job_id,
    s.srvname,
    j.name,
    js.step_id,
    js.command,
    j.enabled
FROM    dbo.sysjobs j
JOIN    dbo.sysjobsteps js
    ON    js.job_id = j.job_id
JOIN    master.dbo.sysservers s
    ON    s.srvid = j.originating_server_id
WHERE    js.command LIKE N'%Staging -> [AUPAIR] arrivalDate trigger issue%'
Run Code Online (Sandbox Code Playgroud)

只有当我改变我的查询如下时,我才能找到强盗工作:

USE [msdb]
GO
SELECT    j.job_id,
    s.srvname,
    j.name,
    js.step_id,
    js.command,
    j.enabled
FROM    dbo.sysjobs j
JOIN    dbo.sysjobsteps js
    ON    js.job_id = j.job_id
JOIN    master.dbo.sysservers s
    ON    s.srvid = j.originating_server_id
--WHERE    js.command LIKE N'Staging …
Run Code Online (Sandbox Code Playgroud)

sql-server database-mail jobs sql-server-2016 string-searching

2
推荐指数
1
解决办法
1446
查看次数

如何使用 SQL Server 数据库邮件发送 Unicode 符号?

如何使用 SQL Server 数据库邮件发送 Unicode 符号?我的目标是发送关于电子邮件主题的符号。比方说,我想发送关于该主题的“带有符号的主题”。我想使用的符号来自 Segoe UI Emoji 字体。

谢谢!

sql-server database-mail unicode

2
推荐指数
1
解决办法
1464
查看次数

在 SQL Server Express 2012 SP1 中找不到数据库邮件功能

我需要在我的项目中使用 SQL Server 数据库邮件功能。但是数据库邮件在我的开发实例上似乎不可用。

对象资源管理器中应该有一个“数据库邮件”节点。在此屏幕截图中,我似乎找不到任何内容。还显示了我的 SQL Server 版本。

在此处输入图片说明

此 SQL Server 版本不支持数据库邮件吗?使用数据库邮件需要哪个 SQL Server 版本(或版本)?

我可以在网上找到的所有文档总是假设该功能已经安装,然后继续解释如何配置它。如果我的 SQL Server 版本支持数据库邮件,如何安装/启用该功能?

sql-server sql-server-2012 sql-server-express database-mail

2
推荐指数
2
解决办法
598
查看次数

数据库邮件是否值得冒险/标准做法

我启用Database Mail XPs并在我的开发机器上测试它。我只是想知道这是否DB Mail是一个糟糕的安全选择,以及通过应用程序服务器(ColdFusion 或 PHP)发送这种消息是否更安全(或标准做法)?我将使用Database Mail数据库备份/恢复消息、错误或错误检查消息(我能想到的)。我知道启用功能总是会增加风险。

使用:

  • 在防火墙后面等。
  • 视窗 2012 r2
  • 微软 SQL Server 2012
  • Exchange 在单独的服务器上
  • 使用 Windows 身份验证
  • 启用需要安全连接

提前致谢。

security sql-server sql-server-2012 database-mail

1
推荐指数
1
解决办法
3193
查看次数

sp_send_dbmail 在结果集中的所有字符之间填充 00 位

我在每晚触发的 SQL 代理作业中使用 sp_send_dbmail。该作业查询我们的数据库并检查产品价格更新,如果有,它将通过电子邮件作为附件发送给我们的电子商务供应商。他们有一些自动流程,他们会更新我们的电子商务平台,但是他们的自动流程无法处理 sp_send_dbmail 提供的文件。sp_send_dbmail 似乎在结果集中的所有字符之间放置了空字符。

查看在十六进制编辑器中打开 csv 的结果:

十六进制捕捉

通过文本编辑器查看我看到的预期:

文字捕捉

sp_send_dbmail 在这里查询:

    SET @FileName = 'Update_' + CONVERT(VARCHAR(12),GETDATE),105) '.csv'        
    SET @Query = 'Some Query'

    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'me@domain.com'
        @query = @Query
        @attach_query_result_as_file = 1
        @query_attachment_filename = @FileName
        @query_result_separator = ','
        @query_result_no_padding =  1
    END
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

****编辑补充说明****

使用 Microsoft SQL Server 2008 R2 排序规则为 Latin1_General_CI_AS

离开 no_padding 会在每个返回的字段中留下几个尾随空格。每个空格 (20) 由​​空值 (00) 分隔

NoPadCapture

sql-server t-sql database-mail encoding unicode

1
推荐指数
1
解决办法
692
查看次数

为什么我收到 SQL Server 数据库邮件的电子邮件大小错误?

我通过 SQL Server 电子邮件发送 6 个 .csv 文件作为附件。但是电子邮件失败并在数据库邮件日志中显示以下消息:

异常消息:无法向邮件服务器发送邮件。(服务不可用,关闭传输通道。服务器响应为:数据长度超过 52.4MiB 限制)

然后我运行以下命令将 maxfilesize 限制增加 2 GB

EXECUTE msdb.dbo.sysmail_configure_sp  
'MaxFileSize', '2147483647';
Run Code Online (Sandbox Code Playgroud)

文件大小限制已成功更改为 2 GB,但我仍然收到相同的错误消息。

以下是我的文件大小(以 KB 为单位)

文件 A 213 KB,文件 B 265 KB,文件 C 6246 KB,文件 D 35 KB,文件 E 60 KB,文件 F 31371 KB

我正在使用 mail-gun(smtp) 发送电子邮件。电子邮件在没有 FILE F 的情况下成功运行。但是当我附加 FILE F 时,电子邮件失败。当我将最大文件大小增加到 2 GB 时,为什么我的电子邮件失败。任何的想法?

sql-server database-mail

0
推荐指数
1
解决办法
106
查看次数

使用数据库邮件发送电子邮件

如何在 SQL Server 中使用数据库邮件?我在论坛上关注了很多文章,但我失败了很多错误。我在一本书中读到,我必须先安装 SMTP 服务器和 Microsoft Exchange,然后才能使用数据库邮件?这样对吗?

sql-server database-mail

-1
推荐指数
1
解决办法
1万
查看次数