我目前在 7.2 rev 140526 版本上运行本地Sitecore,在 2.4 rev 150619 运行营销商网站表单。我目前在使用WFFM SendEmailMessage默认保存操作时遇到SMTP验证错误失败。
经过一番调查后,我发现这是因为WFFM的内部EmailAttributes类存储了SMTP配置(来自web.config或SaveAction本身的参数字段,根据他们的documentation)是使用一年前更改过的旧SMTP密码。
也就是说,尽管webconfig和Parameters字段中的邮件服务器密码指定了相同的值,但由以下两行代码检索的值是不同的:
var configPassword = Sitecore.Configuration.Settings.GetSetting("MailServerPassword");
// EmailAttributes.Password
var basePassword = Password;
访问EmailAttributes.Password字段时返回的旧密码在解决方案或Sitecore / Website目录中的web.config中不存在,也不存在于我的本地showconfig中。此外,旧密码不存在于默认WFFM SendEmailMessage保存操作的“参数”字段中,并且针对Core,Master和Web数据库执行的以下Sitecore查询不会产生任何结果:
fast://*[@Parameters = '%fooBar%']
还值得注意的是,如果使用configPassword变量中包含的值(这是正确的密码)来覆盖EmailAttribute的密码字段中包含的值(例如Password = configPassword),则邮件发送成功且没有SMTP服务器的身份验证错误。
我们有一个继承自Sitecore.Form.Submit.SendMessage的自定义SendEmail保存操作,会覆盖Execute方法,操纵字段集合并调用base.Execute()和电子邮件成功发送。
此外,在WFFM v 2.3.0 rev 130118中,当在web.config文件中使用相同的SMTP配置并将配置注入参数时,使用WFFM提供的默认SendEmailMessage保存操作时,没有SMTP失败来验证引发的异常SendEmailMessage保存操作的字段。
我对于如何/为什么EmailAttributes.Password字段获取配置中不存在的值,而不是来自sitecore中的SaveAction上的Paremeters字段,并且未在SMTP中手动配置而感到茫然电子邮件IIS模块。
非常感谢任何见解!
答案 0 :(得分:0)
问题很可能是由于存储WFFM参数的方式。遗憾的是,当您向表单添加操作时,保存操作不会存储为对原始文件的引用。实际发生的是将参数从“保存操作”的参数字段复制到表单上的Save Actions
字段。由于它是副本而不是引用,因此更改原始保存操作的参数不会更改使用该保存操作的任何现有表单。
您可以通过转到内容编辑器中的表单来验证这一点,转到查看功能区并确保同时选中Standard Fields
和Raw Values
。然后查看“提交”部分下的Save Actions
字段。您应该在<parameters>
节点的XML中找到密码。
有两种方法可以解决这个问题:
Save Actions
字段编辑XML以删除密码