有没有一种不使用DBMail从server存储过程发送电子邮件的方法?默认情况下,DBMail对电子邮件使用base64编码进行硬编码。据我所知没有办法推翻这个。
我们需要在邮件服务器上解析/处理消息,而base64编码的消息很难被解析。我们不想尝试解码它们,而是使用其他方法发送电子邮件。
最好是不使用CDOSYS或CDONTS的?为什么?因为我们要迁移到,而Server不支持CDOSYS或CDONTS。
见此处:https://technet.microsoft.com/en-us/library/hh922965.aspx
具体而言:
However, before you attempt to host a Web site on Server Core, it’s worth noting
code that makes use of System.Web.Mail will fail because of the dependency on
CDOSYS (which does not exist in Server Core).
Microsoft recommends modifying Web application code to use System.Mail.Net
instead of System.Web.Mail.
这是在引用web服务器上的asp/..net代码,但同样的限制可能也适用于安装在Core服务器上的SQL服务器。
因此,考虑到这两个限制(没有dbmail,也没有cdonts/cdosys),我们如何从存储过程发送邮件?有什么想法吗?)
谢谢!布拉德
发布于 2017-06-09 12:25:57
可以使用类似于下面的代码在数据库中创建一个存储过程,该存储过程通过使用Server自动化存储过程来调用CDONTS对象模型发送电子邮件。
CREATE PROCEDURE [dbo].[sp_send_cdontsmail] @From varchar(100), @To varchar(100), @Subject varchar(100), @Body varchar(4000), @CC varchar(100) = null, @BCC varchar(100) = null AS Declare @MailID int Declare @hr int EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT EXEC @hr = sp_OASetProperty @MailID, 'From',@From EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body EXEC @hr = sp_OASetPropert, @MailID, 'BCC',@BCC EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject EXEC @hr = sp_OASetProperty @MailID, 'To', @To EXEC @hr = sp_OAMethod @MailID,'Send', NULL EXEC @hr = sp_OADestroy @MailID
接下来,使用您创建的存储过程并提供正确的参数: exec sp_send_cdontsmail‘某人@example.com’、‘omeone2@example.com’、'Test of CDONTS‘、'It works’--只有sysadmin固定服务器角色的成员才能运行OLE自动化存储过程。如果Server用户不是sysadmin固定服务器角色的成员,则不能使用示例中提到的存储过程发送电子邮件。在这种情况下,您可能需要开发一个客户端应用程序来发送带有CDONTS的电子邮件。例如,您可以使用应用程序。
CDONTS CDO用于它是一种特定于SMTP的简单邮件传输协议(SMTP)专用OLE服务器,专门为基于的应用程序提供消息传递功能,CDONTS向本地SMTP虚拟服务器发送电子邮件.然后,服务器将电子邮件路由到“智能主机”文本框中指定的SMTP邮件服务器。SMTP邮件服务器将邮件发送到To:参数(示例中的“someone2@example.com”)中指定的电子邮件地址。在From:参数中指定的名称显示为电子邮件的发件人(本例中为“someone@example.com”),主题为“CDONTS测试”,消息“它工作”作为电子邮件的正文。电子邮件中没有复制任何人,因为您没有为CC或BCC字段提供参数。您可以修改该示例,以便它将发送基于HTML的电子邮件或附件。
有关CDONTS的文档,请访问以下Microsoft网站:
http://msdn.microsoft.com/library https://support.microsoft.com/en-us/help/312839/how-to-send-e-mail-without-using-sql-mail-in-sql-server
https://dba.stackexchange.com/questions/175727
复制