Sitecore WFFM SendEmailMessage SMTP密码身份验证错误

Sitecore WFFM SendEmailMessage SMTP密码身份验证错误,sitecore,web-forms-for-marketers,Sitecore,Web Forms For Marketers,我目前正在运行一个本地Sitecore,版本为7.2 rev 140526,营销人员的Web表单为2.4 rev 150619。使用WFFM SendEmailMessage默认保存操作时,我当前遇到SMTP验证失败错误 经过一些调查,我发现这是因为WFFM的内部EmailAttributes类存储SMTP配置(根据其属性,它来自web.config或SaveAction本身的参数字段)使用的是一年前更改的旧SMTP密码 也就是说,尽管webconfig和Parameters字段中的邮件服务器密

我目前正在运行一个本地Sitecore,版本为7.2 rev 140526,营销人员的Web表单为2.4 rev 150619。使用WFFM SendEmailMessage默认保存操作时,我当前遇到SMTP验证失败错误

经过一些调查,我发现这是因为WFFM的内部EmailAttributes类存储SMTP配置(根据其属性,它来自web.config或SaveAction本身的参数字段)使用的是一年前更改的旧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服务器没有身份验证错误

我们有一个自定义SendEmail保存操作,该操作继承自Sitecore.Form.Submit.SendMessage,重写Execute方法,操作字段集合并调用base.Execute()并成功发送电子邮件

此外,在WFFM v 2.3.0 rev 130118中,当使用WFFM提供的默认SendEmailMessage保存操作时,在web.config文件中使用相同的SMTP配置,并且在SendEmailMessage保存操作的参数字段中插入配置时,不会引发SMTP验证失败异常

对于EmailAttributes.Password字段获取的值在配置中不存在,不是来自sitecore中SaveAction上的Paremeters字段,也不是在SMTP电子邮件IIS模块中手动配置的,我不知道如何/为什么


任何见解都将不胜感激

问题很可能是由于WFFM参数的存储方式造成的。不幸的是,在向表单添加操作时,保存操作没有存储为对原始操作的引用。实际发生的情况是,添加参数时,参数会从保存操作的参数字段复制到表单上的
保存操作
字段。由于它是副本而不是引用,因此更改原始保存操作上的参数不会更改使用该保存操作的任何现有表单

您可以通过转到“内容编辑器”中的表单,转到“查看”功能区并确保同时选中了
标准字段
原始值
来验证这一点。然后检查提交部分下的
保存操作
字段。您应该在
节点的XML中找到密码

有两个选项可以解决此问题:

  • 从表单中删除“发送电子邮件”保存操作,然后重新添加
  • 保存操作
    字段编辑XML以删除密码

再次检查您的操作是否为“发送电子邮件”,而不是“发送电子邮件活动消息”。如果是第二个设置,则应参考ECM配置来设置SMTP设置。另请参阅: