表单提交后邮件显示日期时间值而非文本的技术求助
问题:邮件中日期时间仅显示数值而非对应文本
我们网站的活动预约表单提交后,用户收到的邮件里,校区位置能正常显示,但日期时间只显示26、27这类数值,看不到对应的"Wednesday 5th July 2023, 4pm - 7pm"或"Wednesday 5th July 2023, 2pm - 7pm"文本内容,需要修复这个问题。
可行修复方案
方案1:修改邮件模板,添加数值-文本映射判断
参考校区字段的处理逻辑,在邮件模板里给日期时间字段加条件判断,匹配数值显示对应文本:
<h3 style="color: #0f5f72;">Booking Details</h3> <p><strong>Course Area:</strong> {CourseAreaID:text}<br> <strong>Campus:</strong> {if {CampusID:text}=1} St Helens Town Centre Campus{/if} {if {CampusID:text}=2} Knowsley Main Campus (Stockbridge){/if}<br> <strong>Date and Time:</strong> {if {EventDateID:text}=26} Wednesday 5th July 2023, 4pm - 7pm{/if} {if {EventDateID:text}=27} Wednesday 5th July 2023, 2pm - 7pm{/if} </p>
方案2:修改前端JS,让表单提交日期文本(如果后端允许)
如果后端接受日期字段存储文本值,可以修改JavaScript里的datesc.options[1].value赋值,把数值换成对应的文本:
// 原代码 datesc.options[1].value = 26; // 修改为 datesc.options[1].value = "Wednesday 5th July 2023, 4pm - 7pm"; // 原代码 datesc.options[1].value = 27; // 修改为 datesc.options[1].value = "Wednesday 5th July 2023, 2pm - 7pm";
这样邮件模板里的{EventDateID:text}就能直接显示文本内容了。
方案3:后端处理数值映射
在后端发送邮件前,建立一个日期数值与文本的映射表,把EventDateID的数值转换成对应文本后再填充到邮件模板里。比如用类似这样的逻辑(伪代码示例):
date_mapping = { "26": "Wednesday 5th July 2023, 4pm - 7pm", "27": "Wednesday 5th July 2023, 2pm - 7pm" } event_date_text = date_mapping.get(event_date_value, event_date_value)
然后把转换后的event_date_text代入邮件模板对应的位置。
内容的提问来源于stack exchange,提问作者Samantha Ashton
相关产品推荐
相关产品推荐

