使用 Facebook API 向多个收件人发送消息

Posted

技术标签:

【中文标题】使用 Facebook API 向多个收件人发送消息【英文标题】:Send message to multiple recipients using Facebook API 【发布时间】:2012-04-14 09:38:41 【问题描述】:

是否有任何其他方式可以将消息发布给多个收件人。 我们试图整合逻辑,这里描述Facebook send dialog to multiple friends using a recipients arrays 但它现在看起来不起作用。它只允许向 ID 列表中的第一个收件人发送信息。

感谢您的帮助。

【问题讨论】:

看到这个答案,解决方案似乎使用了一个带有 Facebook 用户 ID 的数组***.com/questions/6469748/… 【参考方案1】:

我找到了一种将 Facebook 消息发送给多个朋友的解决方法。 每个 Facebook 用户都会自动获得一个@facebook.com 电子邮件地址。 地址与公共用户名或公共用户 ID 相同。 因此,您可以简单地向该电子邮件地址发送一封常规电子邮件。 邮件将像普通邮件一样显示在 Facebook 收件箱中。 请务必使用已连接用户的电子邮件作为发件人,否则将无法正常工作。 这是一个获取所有朋友的电子邮件地址并调用 Web 服务的示例。

<div id="fb-root"></div>
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    FB.init(
        appId: '#APP_ID#',
        status: true,
        cookie: true,
        xfbml: true
    );

    FB.getLoginStatus(function (response) 
        if (response.status === 'connected') 
            GetData();
         else 
            Login();
        
    );

    function Login() 
        FB.login(function (response) 
            if (response.authResponse) 
                GetData();
            
        ,  scope: 'email' );
    

    function GetData() 
        //Get user data
        FB.api('/me', function (response) 
            //Sender
            var sender = response.email;

            //Get friends
            FB.api('/me/friends', function (response) 

                //Recepients array
                var recipients = [];
                var length = response.data.length;
                var counter = 0;

                //Loop through friends
                for (i = 0; i < length; i++) 
                    var id = response.data[i].id;

                    //Get friend data
                    FB.api('/' + id, function (response) 
                        var recipient = "";

                        //User got a username, take username
                        if (response.username) 
                            recipient = response.username + '@facebook.com';
                        
                        //No username, take id
                        else 
                            recipient = response.id + '@facebook.com';
                        

                        //Add e-mail address to array
                        recipients.push(recipient);

                        counter++;
                        //last email -> send
                        if (counter == length) 
                            SendEmail(sender, recipients);
                        
                    );
                
            );
        );
    

    function SendEmail(sender, recipients) 
        //Call webservice to send e-mail e.g.
        $.ajax( type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            url: '#WEBSERVICE#',
            data: ' sender:"' + sender + '", recipients: ["' + recipients.join('","') + '"] ',
            success: function (response) 
                //do something
            
        );
    
</script>

【讨论】:

我正在尝试向@facebook.com 地址发送消息,但它们总是隐藏在“垃圾邮件”文件夹中。有任何想法吗? webapps.stackexchange.com/questions/44844/… 值得注意的是,此功能不再起作用,发送到 user_id@facebook.com 的电子邮件将被退回。【参考方案2】:

Facebook 不希望你这样做,所以你必须做一个变通办法……你可以开发一个带有内置消息系统的应用程序。然后同时向多个收件人发送请求。当用户点击请求时,您的应用应检索并显示消息。

【讨论】:

以上是关于使用 Facebook API 向多个收件人发送消息的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 gmail api 向多个发件人发送电子邮件

我们如何从facebook发送api的用户ID获取Page-scoped-id?

使用 MailMessage 向多个收件人发送电子邮件?

如何使用 python smtplib 向多个收件人发送电子邮件?

Facebook Messenger API 发件人姓名不可用

使用 Mailkit 或 mimekit 向多个收件人发送一封电子邮件