如何用Adobe Acrobat Pro实现表单提交至用户输入的邮箱?
Adobe Acrobat Pro 表单自定义收件邮箱提交代码
一、实现自定义收件邮箱的正确代码
假设你用来输入团队负责人邮箱的文本框字段名为LeaderEmail,邮件主题文本框还是原来的MyTextField,可以用下面的代码实现需求:
// 获取用户输入的收件邮箱和邮件主题 var targetEmail = this.getField("LeaderEmail").value; var customSubject = this.getField("MyTextField").value; // 对主题做URL编码,避免空格、特殊字符导致链接失效 var encodedSubject = encodeURIComponent(customSubject); // 拼接合法的mailto链接 var mailtoUrl = "mailto:" + targetEmail + "?subject=" + encodedSubject; // 提交表单并将PDF作为附件发送 this.submitForm({ cURL: mailtoUrl, bPDF: true });
注意事项:
- 把
LeaderEmail改成你实际设置的收件邮箱文本框的字段名称 encodeURIComponent是必要的,能避免主题里的空格、特殊符号破坏mailto链接格式
二、你的错误代码问题分析
你贴的这段代码存在三个关键问题:
var customSubject = Tomato; var mailtoUrl = "mailto:this.getField("MyTextField").value?subject=" + customSubject; this.submitForm({ cURL: mailtoUrl, bPDF:true });
未加引号的字面量:
var customSubject = Tomato;里的Tomato没有用引号包裹,JS会把它当作未定义的变量,运行时直接报错Tomato is not defined。如果是要设置固定主题文本,应该写成var customSubject = "Tomato";。字符串内代码未执行:
"mailto:this.getField("MyTextField").value?subject="里的this.getField("MyTextField").value是字符串的一部分,不会被当作JS代码执行,最终生成的mailto链接会是无效的mailto:this.getField("MyTextField").value?subject=...,正确做法是把代码放在字符串外通过+拼接。引号嵌套冲突:整个mailto字符串用双引号包裹,内部又用双引号
"MyTextField",会导致JS语法解析失败。可以把内部的双引号改成单引号,或者整个字符串用单引号包裹。
内容的提问来源于stack exchange,提问作者CptnMorgan
相关产品推荐
相关产品推荐

