javascript - 在 SuiteScript 中发送带有正确回复的案例回复电子邮件
问题描述
我有一些功能可以在通过某人提交电子邮件创建案例时自动发送电子邮件回复,该电子邮件将发送到 NetSuite 案例资料电子邮件地址。尝试设置正确的回复电子邮件地址时会出现问题。到目前为止,创建一个的尝试不允许将成功的响应直接返回到案例记录中。起初,无法投递的消息被退回,直到我发现地址结构中存在错误。然而,现在这些消息似乎并没有回到案件记录中。这是正在使用的结构:
cases.AAAAA.BBBBB_CCCCC_DDDDD.EEEEE@AAAAA.email.netsuite.com
// AAAAA is the account number
// BBBBB is the internal ID of the case record
// CCCCC is the internal ID of the message record
// DDDDD is the internal ID of the customer record on the case
// EEEEE is a hexadecimal value of unknown sourcing or meaning
我在想问题的一部分可能是消息记录 ID 是从案例中发出的消息的 ID,而我一直在做的是从初始传入电子邮件中保存的消息记录的 ID这首先产生了这个案例。这让我相信我不能只使用 email.send() API 来设置回复电子邮件地址,但我看不到另一种发送电子邮件的方式。有什么我想念的吗?
解决方案
email.send()
如果您打算让客户能够回复支持案例,则不要使用该功能。
相反,您需要创建一个案例记录(或加载现有的),然后通过该案例记录发送您的电子邮件。
将以下示例脚本上传到您的文件柜并创建一个 Suitelet 脚本、部署并运行它。您将看到一个简单的表单,允许您通过案例记录发送电子邮件。
代码:
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
*/
define(['N/ui/serverWidget', 'N/ui/message', 'N/record', 'N/url', 'N/email'], function (serverWidget, message, record, url, email) {
function onRequest(context) {
var form = serverWidget.createForm({
title: 'Send Email via Support Case'
});
form.addField({
id: 'custom_customer',
label: 'Customer',
type: serverWidget.FieldType.SELECT,
source: record.Type.CUSTOMER
});
form.addField({
id: 'custom_email',
label: 'Email Address (not required)',
type: serverWidget.FieldType.TEXT
});
form.addField({
id: 'custom_messagesubject',
label: 'Message Subject',
type: serverWidget.FieldType.TEXT
});
form.addField({
id: 'custom_messagebody',
label: 'Message Body',
type: serverWidget.FieldType.RICHTEXT
});
form.addSubmitButton({
label: 'Send Email'
});
if (context.request.method === 'POST') {
var customerId = context.request.parameters['custom_customer'];
var customerEmail = context.request.parameters['custom_email'];
var messageSubject = context.request.parameters['custom_messagesubject'];
var messageBody = context.request.parameters['custom_messagebody'];
try {
var caseId = 0;
var errorMsg = '';
var caseRec = record.create({
type: record.Type.SUPPORT_CASE
});
caseRec.setValue({
fieldId: 'company',
value: customerId
});
// You can specify an email address to overide the customer's default
// Useful if you need to use an "Anonymous Customer" record and set the outgoing email address to the correct one
if (customerEmail != '') {
caseRec.setValue({
fieldId: 'email',
value: customerEmail
});
}
caseRec.setValue({
fieldId: 'title',
value: messageSubject
});
caseRec.setValue({
fieldId: 'emailform',
value: true
});
caseRec.setValue({
fieldId: 'outgoingmessage',
value: messageBody
});
caseId = caseRec.save({
ignoreMandatoryFields: true
});
} catch (e) {
errorMsg = JSON.stringify(e);
}
if (caseId > 0 && errorMsg == '') {
var caseUrl = url.resolveRecord({
recordType: record.Type.SUPPORT_CASE,
recordId: caseId
});
form.addPageInitMessage({
message: 'Email sent successfully. <a target="_blank" href="' + caseUrl + '">Open Support Case</a>',
title: "Success!",
type: message.Type.CONFIRMATION
});
} else {
form.addPageInitMessage({
message: "Error occurred while sending case message: " + errorMsg,
title: "Failed",
type: message.Type.ERROR
});
}
}
context.response.writePage(form);
}
return {
onRequest: onRequest
};
});
推荐阅读
- php - ms sql server 上的 Yii2 迁移返回错误:找不到驱动程序
- python - 从每一代的已知顶点生成随机树图
- wiki - 使用 GAM 或 admin sdk api 更新成员的显示名称
- javascript - 如何创建一个使用 node 和 mongodb 发送邮件的 api
- jquery - 切换点击最多 4 次可以正常工作,但在第 6 次点击之后效果不佳
- php - JS数组没有被传递给php文件?
- html - 如何在 ion-item 中修改 .item-native 类?
- django - Django创建图像文件的路径
- amazon-web-services - 关于检索 AWS EC2 实例作为快照
- amazon-web-services - 用于授予对 AWS 资源的访问权限的 Amazon STS 与身份池