我可以替换Sitecore电子邮件发送服务吗?

时间:2015-09-21 01:06:19

标签: email smtp sitecore

默认情况下,smtp服务器可以在Sitecore web.config中进行配置。但是有可能劫持整个电子邮件发送部分使用不同的方法而不是smtp服务器吗?有某种管道吗?

例如,我想使用其他网络服务发送所有电子邮件,或者我想将所有电子邮件保存到数据库中而不是实际发送它们?

另外一个问题是,内容传递实例是否需要默认发送电子邮件?我会假设所有开箱即用的电子邮件发送都来自内容创作实例吗?

根据我的理解,Sitecore中只有工作流程需要发送电子邮件,并且可以通过更改电子邮件操作进行自定义。 (假设没有电子邮件营销活动模块,没有适用于市场的Webform模块等)

任何见解都会有很大的帮助,谢谢!

--------------更新--------------------- 29/09/2015 ------ --------

我得到了答案,谢谢大家。

基本上我不需要在CDS实例上处理smtp服务器,并且所有电子邮件发送都可以由CAS实例上的管道控制。

然而,当我检查源代码时,只有一个地方“提醒”使用smtp服务器直接发送电子邮件。因此,如果此功能对您很重要,您应该考虑更新此功能。

2 个答案:

答案 0 :(得分:3)

是绝对的。

在运行时,在定义SMTPClient时,您可以通过以下代码设置服务器的属性

SmtpClient client=new SmtpClient("Host");
client.Credentials=new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.from="sender@gmail.com";
mailMessage.To.Add("recipient@gmail.com");
mailMessage.body="body";
mailMessage.subject="subject";
client.Send(mailMessage);

您可以执行的操作,而不是在代码中硬编码值,您可以从Sitecore项检索值并使用它们,这将允许更好地控制内容编辑器,甚至在功能的不同部分使用不同的SMTP服务器。 / p>

Item emailItem = Sitecore.Context.Database.GetItem("Id of Item");

string from = emailItem["From"];
string to = emailItem["To"];
string server = emailItem["Mail server"];
string subject = emailItem["Subject"];
string message = emailItem["Message"];

Sitecore的SendEmail又名pipelineEXM ECM个,如果您采用EXM路线,您可以覆盖它们。它有两个processors FillEmailSendEmail您可以使用或删除并添加您自己的processor以实际发送消息。

可以将电子邮件保存到数据库,或者更确切地说是内容,而不是发送它们。这可以通过Sitecore中的自定义代码或Webforms for Marketers来实现,其中Save Actions用于发送电子邮件或保存到数据库,并且配置非常简单。

正如您所说,无需在任何场合发送电子邮件,更多的是确定您要实现的目标,以及发送电子邮件,保存到数据库等是否更具相关性。关于Sitecore的好处是您可以以编程方式创建Items并将信息存储在那里,除了担心创建数据库表,管理ConnectionStrings,设置EntityFramework等。

以下是creating Sitecore Items Programmatically上的简单博客。

发送电子邮件的Sitecore工作流程是可选的,可以通过从Send Email项目下方删除CommandAction WorkflowState项目然后发布来删除。

答案 1 :(得分:1)

拦截所有电子邮件的最简单方法是将Sitecore配置为将所有电子邮件发送到本地托管的SMTP服务器(127.0.0.1),然后使用您的自定义代码从那里获取它们。

有很多免费的SMTP服务器,只需确保您在投入生产之前使用大量电子邮件进行测试。