首页 > 解决方案 > 在 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 来设置回复电子邮件地址,但我看不到另一种发送电子邮件的方式。有什么我想念的吗?

标签: javascriptemailnetsuitesuitescript2.0

解决方案


email.send()如果您打算让客户能够回复支持案例,则不要使用该功能。

相反,您需要创建一个案例记录(或加载现有的),然后通过该案例记录发送您的电子邮件。

将以下示例脚本上传到您的文件柜并创建一个 Suitelet 脚本、部署并运行它。您将看到一个简单的表单,允许您通过案例记录发送电子邮件。

示例屏幕截图: 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
    };
});

推荐阅读