通过代码提交表单项不会触发电子邮件通知

时间:2019-05-11 02:32:13

标签: kentico-mvc kentico-12

我正在尝试通过MVC Web应用上的api提交新的表单项(从表单的“代码”标签中获取了代码),但是电子邮件通知不起作用。它确实创建了一条新记录,除了电子邮件警报。我检查了电子邮件队列,但没有表单项的记录。我正确配置了smtp服务器设置。我也检查了事件日志,但没有看到任何错误。我是否缺少某些内容,或者此功能仅在门户网站引擎上有效?

enter image description here

1 个答案:

答案 0 :(得分:0)

显然,如果我们通过代码手动提交表单,而不使用默认的mvc表单小部件,则不会自动触发通知。我们还需要通过代码发送通知。 form data documentation

// Gets the form object representing the 'ContactUs' form on the current site
BizFormInfo formObject = BizFormInfoProvider.GetBizFormInfo("ContactUs", SiteContext.CurrentSiteID);

if (formObject != null)
{
// Gets the class name of the 'ContactUs' form
DataClassInfo formClass = DataClassInfoProvider.GetDataClassInfo(formObject.FormClassID);
string formClassName = formClass.ClassName;

// Creates a new data record for the form
BizFormItem newFormItem = BizFormItem.New(formClassName);

// Sets the values for the form's fields (UserMessage in this case)
newFormItem.SetValue("UserMessage", "This is a message submitted through the API.");

// Saves the new form record into the database
// Set values for all 'Required' fields in the form before calling the Insert method, otherwise an exception will occur
newFormItem.Insert();

// Obtains a factory object used to create a form notification sender service for the given form
IBizFormMailSenderFactory senderFactory = Service.Resolve<IBizFormMailSenderFactory>();

// Creates an instance of the form notification sender for the inserted form item
IBizFormMailSender sender = senderFactory.GetFormMailSender(formObject, newFormItem);

// Sends a notification email to users (as specified on the form's 'Email notification' tab)
sender.SendNotificationEmail();

// Sends a confirmation email to the submitter (based on the form's autoresponder settings)
sender.SendConfirmationEmail();
}