Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email METEOR:无法向多个用户发送电子邮件_Email_Meteor - Fatal编程技术网

Email METEOR:无法向多个用户发送电子邮件

Email METEOR:无法向多个用户发送电子邮件,email,meteor,Email,Meteor,当我有新帖子时,我需要通过他们的电子邮件通知所有用户 server/methods.js Meteor.methods({ sendNewsletter: function(doc) { var pipeline = [ {$group: {_id:"$emails.address"}} ]; var to = Meteor.users.aggregate(pipeline); var text = "Title: " + doc.title +

当我有新帖子时,我需要通过他们的电子邮件通知所有用户

server/methods.js

Meteor.methods({
  sendNewsletter: function(doc) {
    var pipeline = [
      {$group: {_id:"$emails.address"}}
    ];
    var to = Meteor.users.aggregate(pipeline);
    var text = "Title: " + doc.title + "\n\n"
            + "Summary: " + doc.summary + "\n\n\n\n"

    this.unblock();

    // Send the e-mail
    Email.send({
        to: to,
        from: "noreply@domain.com",
        subject: "MyApp - " + doc.title,
        text: text
    });
  }
});
在客户端调用sendNewsletter的方法时,我在终端上收到以下警告:

I20151030-04:16:42.039(7)? Exception while invoking method 'sendNewsletter' RecipientError: Can't send mail - all recipients were rejected
I20151030-04:16:42.041(7)?     at Object.Future.wait (/Users/user/.meteor/packages/meteor-tool/.1.1.9.1f0n2l1++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:398:15)
I20151030-04:16:42.042(7)?     at smtpSend (packages/email/email.js:86:1)
I20151030-04:16:42.042(7)?     at Object.Email.send (packages/email/email.js:176:1)
I20151030-04:16:42.043(7)?     at maybeAuditArgumentChecks (livedata_server.js:1692:12)
I20151030-04:16:42.043(7)?     at livedata_server.js:708:19
I20151030-04:16:42.043(7)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20151030-04:16:42.044(7)?     at livedata_server.js:706:40
I20151030-04:16:42.044(7)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20151030-04:16:42.044(7)?     at livedata_server.js:704:46
I20151030-04:16:42.044(7)?     - - - - -
I20151030-04:16:42.045(7)?     at SMTPClient._actionRCPT (/Users/user/.meteor/packages/email/.1.0.7.11df8pa++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:909:27)
I20151030-04:16:42.045(7)?     at SMTPClient._onData (/Users/user/.meteor/packages/email/.1.0.7.11df8pa++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:329:29)
I20151030-04:16:42.045(7)?     at CleartextStream.emit (events.js:95:17)
I20151030-04:16:42.045(7)?     at CleartextStream.<anonymous> (_stream_readable.js:765:14)
I20151030-04:16:42.046(7)?     at CleartextStream.emit (events.js:92:17)
I20151030-04:16:42.046(7)?     at emitReadable_ (_stream_readable.js:427:10)
I20151030-04:16:42.046(7)?     at _stream_readable.js:420:7
I20151030-04:16:42.046(7)?     at process._tickCallback (node.js:448:13)
I20151030-04:16:42.039(7)?调用方法“sendNewsletter”RecipientError时出现异常:无法发送邮件-所有收件人均被拒绝
I20151030-04:16:42.041(7)?在Object.Future.wait(/Users/user/.meteor/packages/meteor tool/.1.1.9.1f0n2l1++os.osx.x86_64+web.browser+web.cordova/mt os.osx.x86_64/dev_bundle/server lib/node_modules/fibers/Future.js:398:15)
I20151030-04:16:42.042(7)?在smtpSend(packages/email/email.js:86:1)
I20151030-04:16:42.042(7)?在Object.Email.send(packages/Email/Email.js:176:1)
I20151030-04:16:42.043(7)?在MaybauditArgumentChecks(livedata_server.js:1692:12)
I20151030-04:16:42.043(7)?在livedata_server.js:708:19
I20151030-04:16:42.043(7)?在[object object].\uu.extend.withValue(packages/meteor/dynamics\u nodejs.js:56:1)
I20151030-04:16:42.044(7)?在livedata_server.js:706:40
I20151030-04:16:42.044(7)?在[object object].\uu.extend.withValue(packages/meteor/dynamics\u nodejs.js:56:1)
I20151030-04:16:42.044(7)?在livedata_server.js:704:46
I20151030-04:16:42.044(7)-
I20151030-04:16:42.045(7)?在SMTPClient.\u actionRCPT(/Users/user/.meteor/packages/email/.1.0.7.11df8pa++os+web.browser+web.cordova/npm/node\u modules/simplestp/lib/client.js:909:27)
I20151030-04:16:42.045(7)?在SMTPClient.onData(/Users/user/.meteor/packages/email/.1.0.7.11df8pa++os+web.browser+web.cordova/npm/node_modules/simplestp/lib/client.js:329:29)
I20151030-04:16:42.045(7)?在CleartextStream.emit(events.js:95:17)
I20151030-04:16:42.045(7)?在CleartextStream。(_stream_readable.js:765:14)
I20151030-04:16:42.046(7)?在CleartextStream.emit(events.js:92:17)
I20151030-04:16:42.046(7)?在emitReadable上(_stream_readable.js:427:10)
I20151030-04:16:42.046(7)?at_stream_readable.js:420:7
I20151030-04:16:42.046(7)?在进程中调用(node.js:448:13)

有人知道如何向多个收件人发送电子邮件吗?谢谢,,,,

重新编写
服务器/methods.js
文件获取
to
变量以保存电子邮件地址数组。 由于Meteor不支持MongoDB中的distinct(尚未),您只需在MongoShell中使用它作为
db.users.distinct(“emails.address”)
,就可以了

使用underline.js库中的三种方法从用户集合中获取不同的电子邮件地址

首先在光标上使用返回的流星光标转换为数组。例如:

var users = Users.find({}, { fields: {"emails": true} }).fetch();   
然后使用方法通过转换函数(iteratee)映射列表中的每个文档,在另一个数组中生成一个仅包含电子邮件地址值的新数组。定义转换函数如下

var callback = function(doc) {
    var emailAddresses = [];
    for (var i = 0; i < doc.emails.length; i++) {
        emailAddresses.push(doc.emails[i].address);
    }
    return emailAddresses;
};

var emails = _.map(users, callback);
通过使用来展平阵列,以获得可用的阵列,然后使用方法返回一组独特的阵列,如下所示:

var uniqueEmails = _.uniq(_.flatten(emails));
总之,您的代码现在应该有一个电子邮件地址数组,然后可以发送

Meteor.methods({
    sendNewsletter: function(doc) {
        var users = Users.find({}, { fields: {"emails": true} }).fetch();
        var callback = function(doc) {
            var emailAddresses = [];
            for (var i = 0; i < doc.emails.length; i++) {
                emailAddresses.push(doc.emails[i].address);
            }
            return emailAddresses;
        };

        var emails = _.map(users, callback);
        var to = _.uniq(_.flatten(emails));
        var text = "Title: " + doc.title + "\n\n"
                + "Summary: " + doc.summary + "\n\n\n\n"

        this.unblock();

        // Send the e-mail
        Email.send({
            to: to,
            from: "noreply@domain.com",
            subject: "MyApp - " + doc.title,
            text: text
        });
    }
});
Meteor.methods({
发送通讯:功能(文档){
var users=users.find({},{字段:{“emails”:true}}).fetch();
var callback=函数(doc){
var emailAddresses=[];
对于(var i=0;i
查看下面的演示

var用户=[
{
“_id”:“UKN9MLO3版权所有”,
“电子邮件”:[
{
“地址”:a@a.com",
“已验证”:错误
}
]
},
{
“_id”:“5SXRXRXRARIYHRQACE”,
“电子邮件”:[
{
“地址”:b@a.com",
“已验证”:错误
}
]
},
{
“_id”:“WMHWxeymY4ATWLXjz”,
“电子邮件”:[
{
“地址”:c@a.com",
“已验证”:错误
}
]
}
];
var callback=函数(d){
var emailAddresses=[];
对于(var i=0;i


hi@MichelFloyd。。是的,这就是问题所在。我已经问了这个问题的解决办法:你说的带逗号的字符串是什么意思?哦,没关系。调用“字符串或字符串数组”,这样您就走上了正确的轨道。@KarinaL不用担心,乐意帮助。
Meteor.methods({
    sendNewsletter: function(doc) {
        var users = Users.find({}, { fields: {"emails": true} }).fetch();
        var callback = function(doc) {
            var emailAddresses = [];
            for (var i = 0; i < doc.emails.length; i++) {
                emailAddresses.push(doc.emails[i].address);
            }
            return emailAddresses;
        };

        var emails = _.map(users, callback);
        var to = _.uniq(_.flatten(emails));
        var text = "Title: " + doc.title + "\n\n"
                + "Summary: " + doc.summary + "\n\n\n\n"

        this.unblock();

        // Send the e-mail
        Email.send({
            to: to,
            from: "noreply@domain.com",
            subject: "MyApp - " + doc.title,
            text: text
        });
    }
});