首页 > 解决方案 > SuiteScript email.send 在外部 URL 套件中不起作用

问题描述

我无法从套件的外部 url 版本发送电子邮件。内部网址一切正常,但每当我使用外部网址时,都不会发送电子邮件。没有错误,发送邮件后的代码正确执行。我在生产和沙盒帐户上都试过这个,我以管理员身份执行它。email.send 是否限制外部网址?有什么解决方法吗?我是 NetSuite 的新手。

        var currentuser = 1111;
        var recipient = 'some.email@email.com';
        var subject = 'subject';
        var EmailBody = '<p> email content </p>';

        email.send({
            author: currentuser,
            recipients: recipient,
            subject: subject,
            body: EmailBody,
        });

标签: netsuitesuitescriptsuitescript2.0

解决方案


/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/email', 'N/log', 'N/runtime'],

function(record, email, log, runtime) {
   
    /**
     * Definition of the Suitelet script trigger point.
     *
     * @param {Object} context
     * @param {ServerRequest} context.request - Encapsulation of the incoming request
     * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
     * @Since 2015.2
     */
    function onRequest(context) {
        var req = context.request;
        var res = context.response;
        
        var userObj = runtime.getCurrentUser();
        log.debug('user is: ', JSON.stringify(userObj));
        log.debug('role', userObj.role);


        email.send({
            author: 5, 
            recipients: 5,
            subject: 'Test suitelet email',
            body: 'suitelet email body',

        });

        log.debug('Done','email sent');
        
        
    }

    return {
        onRequest: onRequest
    };
    
});

需要注意的是,在测试中,开发帐户中用于路由的电子邮件选项设置为向登录用户发送电子邮件,并且它是硬编码的。在 Sandbox 和 Release Preview 帐户上,为了在使用 Suitelet 的外部 URL 时发送电子邮件,应将“发送电子邮件至”字段设置为“设置”>“公司”>“电子邮件首选项”>“电子邮件选项”下的特定电子邮件地址。

由于此值在测试驱动器和开发帐户上是硬编码的,因此它无法验证与当前登录用户的会话,因为在触发 email.send(options) 或 nlapiSendEmail 时没有这样的用户。

请注意,Production 账户没有这样的限制,功能将被执行并成功发送电子邮件。

可以使用示例 Suitelet 代码在 Sandbox、Release Preview、生产和开发帐户上测试此行为。请让我知道这是怎么回事!


推荐阅读