在 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
                    }
                });