首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用DBMail从Server发送电子邮件

不使用DBMail从Server发送电子邮件
EN

Database Administration用户
提问于 2017-06-07 23:23:15
回答 1查看 4.2K关注 0票数 2

有没有一种不使用DBMail从server存储过程发送电子邮件的方法?默认情况下,DBMail对电子邮件使用base64编码进行硬编码。据我所知没有办法推翻这个。

我们需要在邮件服务器上解析/处理消息,而base64编码的消息很难被解析。我们不想尝试解码它们,而是使用其他方法发送电子邮件。

最好是不使用CDOSYS或CDONTS的?为什么?因为我们要迁移到,而Server不支持CDOSYS或CDONTS。

见此处:https://technet.microsoft.com/en-us/library/hh922965.aspx

具体而言:

代码语言:javascript
复制
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),我们如何从存储过程发送邮件?有什么想法吗?)

谢谢!布拉德

EN

回答 1

Database Administration用户

发布于 2017-06-09 20:25:57

配置智能主机:

  • 单击“开始”,指向“程序”,指向“管理工具”,然后单击“Internet服务管理器”打开IIS管理器。
  • 打开服务器的树。右键单击“默认SMTP虚拟服务器”,然后单击“属性”。
  • 找到“传递”选项卡,然后单击“高级”。
  • 在“智能主机”文本框中键入SMTP邮件服务器的名称。如果不知道SMTP邮件服务器的名称,请与邮件管理员联系。
  • 确保简单邮件传输协议(SMTP)服务正在运行。SMTP服务是IIS管理服务的一部分。因此,IIS管理服务也必须正在运行。

创建一个存储过程以发送CDONTS:

可以使用类似于下面的代码在数据库中创建一个存储过程,该存储过程通过使用Server自动化存储过程来调用CDONTS对象模型发送电子邮件。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/175727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档