我有一个工作流程,在提交包含textarea的表单时发送电子邮件。
我的问题是,在发送电子邮件时,输入到textarea的内容格式会丢失(例如回车/段落)。
有没有办法像用户输入的那样完全维护内容?目前我正在使用它来输出电子邮件活动中的内容:
<p>Message:<br/>
{Request.Form:Message}</p>
正在运行Orchard 1.10.2。任何帮助非常感谢!
答案 0 :(得分:1)
修改强>
如果您使用动态表单,则此语法将起作用:
FormSubmission.Field:Message.LineEncode
如果它是您自己的表单,我担心它看起来像是Orchard中的一个错误,其中Request.Form的链接值实际上是检索命名查询字符串参数。要对此进行排序,您必须编辑源文件:Orchard.Tokens.Providers.RequestTokens
。
添加新方法:
private static Tuple<string, string> FilterChainParam(string token, string tokenType) {
if(token.StartsWith(tokenType, StringComparison.OrdinalIgnoreCase)) {
return FilterChainParam(token);
}
return null;
}
然后在Evaluate
方法中替换此行:
.Chain(FilterChainParam, "Text", (token, request) => request.QueryString.Get(token))
这些行:
.Chain((token) => FilterChainParam(token, "QueryString"), "Text", (token, request) => request.QueryString.Get(token))
.Chain((token) => FilterChainParam(token, "Form"), "Text", (token, request) => request.Form.Get(token))
.Chain((token) => FilterChainParam(token, "Route"), "Text", (token, request) => GetRouteValue(token, request))
不是特别漂亮,但它有效。您现在可以使用如下(注意表单字段周围的括号)
<强> ORIGINAL 强>
您的表单将通过电子邮件客户端将忽略的新行(\ n)来实现。您需要使用换行符替换它们。幸运的是有人想到了这一点,在Orchard中有一个令牌:LineEncode
。将您的电子邮件活动更改为:
<p>Message:<br/>
{Request.Form:(Message).LineEncode}</p>