在 SuiteScript 中发送带有正确回复的案例回复电子邮件
Sending Case Reply Email With Proper Reply-To in 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
};
});
使用 relatedRecords.activityId 会自动将带有案例回复的电子邮件发送到地址。
email.send({
author: me.id,
recipients: you.id,
subject: 'New Case',
body: emailBody,
// attachments: [fileObj],
relatedRecords: {
activityId: thisCase.id
}
});
我有一些功能可以在创建案例时自动发送电子邮件回复,这是通过某人提交一封发送到 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
};
});
使用 relatedRecords.activityId 会自动将带有案例回复的电子邮件发送到地址。
email.send({
author: me.id,
recipients: you.id,
subject: 'New Case',
body: emailBody,
// attachments: [fileObj],
relatedRecords: {
activityId: thisCase.id
}
});