首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.xsjs中的邮件

.xsjs中的邮件
EN

Stack Overflow用户
提问于 2016-01-14 11:02:30
回答 1查看 952关注 0票数 3

是否有一种方式通过邮件发送邮件,其内容为html页面,长度超过2000字符?我有这段代码,因为我相信它是以URL地址发送的,所以它非常适合简短的html:

代码语言:javascript
复制
var obj = $.request.body.asString();    
var req = new $.web.WebRequest($.net.http.POST, "/messages");
        req.headers.set('Content-Type', encodeURIComponent("application/x-www-form-urlencoded"));

        req.parameters.set("domain", "mailgundomain.com");
        req.parameters.set("from", "me@mailgundomain.com");
        req.parameters.set("to", 'to@email.com');
        req.parameters.set("subject", "subject");
        req.parameters.set("html", obj); //email content

在上面的代码中,我接收文件并将其保存到'org‘变量中,然后将其发送到mail。我需要的可能是把我的“太大”的.html文件放到身体上,然后把它作为电子邮件的内容显示出来。正如您可能看到的,我在.xsjs中非常新,所以越详细的答案越好。如果您需要更多的信息,请随时询问。谢谢。

Edit1:我应该补充一点,当我试图发送更大的文件时,我得到的响应是"414请求-URI太大了“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 13:48:08

编辑

这似乎是正确的办法,由“任择议定书”和我共同提出:

代码语言:javascript
复制
var obj = $.request.body.asString();    
var req = new $.web.WebRequest($.net.http.POST, "/messages");

// request headers
req.headers.set('Content-Type', "application/x-www-form-urlencoded");

// request URL parameters
req.parameters.set("domain", "mailgundomain.com");
req.parameters.set("from", "me@mailgundomain.com");
req.parameters.set("to", 'to@email.com');
req.parameters.set("subject", "subject");

// request body
req.setBody(encodeURIComponent(message));

class将您在.parameters集合中设置的所有内容作为URL参数发送,即使请求方法是POST。这很好-- POST请求可能有URL参数。但是,正如您注意到的那样,URL是有限的。

POST请求的主体不受长度限制,但您必须自己进行适当的内容编码。application/x-www-form-urlencoded类型请求的主体遵循与由&字符分隔的URl-key=value对相同的规则。

代码语言:javascript
复制
var obj = $.request.body.asString();    
var req = new $.web.WebRequest($.net.http.POST, "/messages");

req.headers.set('Content-Type', "application/x-www-form-urlencoded");

var message = {
    domain: "mailgundomain.com",
    from: "me@mailgundomain.com",
    to: "to@email.com",
    subject: "subject",
    html: obj
};

req.setBody(urlEncode(message));

其中urlEncodedFormat()是一个小助手函数:

代码语言:javascript
复制
function urlEncode(obj) {
    return Object.keys(obj).map(function (key) {
        return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
    }).join("&");
}

将对象转换为URL编码的字符串是一种非常常见的操作。很可能您使用的一个库已经包含了一个这样做的函数。

虽然上面的函数可能是正确的(可能存在带有未定义或空值的边缘情况),但最好不要使用手动变体。花些时间在你的库中寻找正确的函数。

也许WebRequest已经自己做了正确的事情,但是我没有办法去测试它。尝试直接将消息对象设置为主体:

代码语言:javascript
复制
req.setBody(message);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34787947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档