【问题标题】:jquery sending email with mandrill from an arrayjquery从数组中发送带有山魈的电子邮件
【发布时间】:2013-05-28 01:49:49
【问题描述】:

我正在拼命挣扎。我想从一个选中的表中收集一组电子邮件地址(一些选中但不是全部)并将它们传递给 Mandrill JavaScript 代码以发送。

这里有两个问题:

  1. 一般如何发送多封电子邮件和
  2. 如何将数组传递给 mandrill 代码以执行电子邮件发送。

代码是:

<script>
    function log(obj) {
        $('#response').text(JSON.stringify(obj));
    }

    function sendTheMail() {
        // Send the email!
        alert('scripting');
        var emails = [];
        var first = [];
        var last = [];
        $('tr > td:first-child > input:checked').each(function() {
            //collect email from checked checkboxes
            emails.push($(this).val());
            first.push($(this).parent().next().next().text());
            last.push($(this).parent().next().next().next().text());
        });
        var new_emails = JSON.stringify(emails);
        alert(new_emails);
        //create a new instance of the Mandrill class with your API key
        var m = new mandrill.Mandrill('my_key');

        // create a variable for the API call parameters
        var params = {
            "message": {
                "from_email": "rich@pachme.com",
                "to": [{"email": new_emails}],
                "subject": "Sending a text email from the Mandrill API",
                "text": "I'm learning the Mandrill API at Codecademy."
            }
        };
        m.messages.send(params, function(res) {
            log(res);
        },
                function(err) {
                    log(err);

                });
    }
</script>

电子邮件地址数组的警报是:

["richardwi@gmail.com","richard.illingworth@refined-group.com","mozartfm@gmail.com"]

得到的错误信息是:

[{"email":"[\"richardwi@gmail.com\",\"richard.illingworth@refined-group.com\",\"mozartfm@gmail.com\"]","status":"invalid","_id":"0c063e8703d0408fb48c26c77bb08a87","reject_reason":null}]

一般来说,以下内容仅适用于一个电子邮件地址:

“收件人”:[{“电子邮件”:“user@gmail.com”}],

但是

“收件人”:[{“电子邮件”:“user@gmail.com”,“anotheruser@gmail.com”}],

没有,所以我什至无法对多次发送进行硬编码。

有什么想法吗?感谢所有帮助。

【问题讨论】:

    标签: jquery mandrill


    【解决方案1】:

    这是无效的 javascript "to": [{"email": "email1", "email2"}]

    改成 "to": [{"email": "email1"},{"email": "email2"}]

    在 javascript 中,[] 是一个数组,{} 是一个具有键/值对的对象。所以“to”应该是一个对象数组,比如{"email": "some@email.com"}

    编辑

    要将您的电子邮件数组映射到此类对象的数组,您可以使用jQuery.map

    // Try doing something like this
    var emailObjects = $.map(emails, function(email) {
       return {"email": email};
    });
    

    然后将您的params 更改为以下内容

    var params = {
        "message": {
            "from_email": "rich@pachme.com",
            "to": emailObjects,
            "subject": "Sending a text email from the Mandrill API",
            "text": "I'm learning the Mandrill API at Codecademy."
        }
    };
    

    【讨论】:

    • 谢谢,非常有帮助,可以回答硬编码问题,如何从复选框表中传递数组?请问您对此有什么建议吗?使用复选框表对我来说是一个更重要的问题。
    • 我不确定我是否理解这个问题,这不是你已经做的吗?
    • 我应该补充一点,我尝试了 var emails = {} 而不是 [],不起作用。
    • 不,不是。我需要以可接受的格式将从复选框收集的数据传递给 mandrill 脚本以发送电子邮件。您已经为我提供了一个“硬编码”的答案,那就是我自己编写电子邮件地址。使用复选框时,可能会有 100 个不可预知的地址,我无法将它们全部硬编码。请只关注上面的主脚本。
    • 我很高兴,谢谢。我已经花了很长时间把头撞在墙上了。
    猜你喜欢
    • 2018-12-05
    • 2015-09-07
    • 2015-06-22
    • 2015-05-02
    • 2015-07-16
    • 2014-07-14
    • 2019-11-12
    • 2016-05-26
    • 2013-05-18
    相关资源
    最近更新 更多