netsuite - 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,
});
解决方案
/**
* @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、生产和开发帐户上测试此行为。请让我知道这是怎么回事!
推荐阅读
- javascript - 如何在 Laravel 中使用 ajax 从模式中保存数据?
- tensorboard - 运行时更改 tensorboard 日志目录
- android - 为日期数组设置警报通知
- jsf - 选择下拉元素时,我想在 JSF 中启用 inputtext
- json - 读取 csv 文件会将其转换为 json,但它将其中的每一行作为空手道中的字符串
- html - 复选框标签中数字的大小
- reactjs - React 导航:如何将数组 map() 数据传递到新屏幕(例如文章列表 > 单篇文章)
- linux - Docker容器中将/dev/sda1挂载到/etc/hosts是什么意思
- c# - 本地主机拒绝连接
- python - 如何在没有代价高昂的循环查询的情况下返回一年中每一天的每天记录数?