在 Laravel 中使用 Mailchimp 自动导出订阅者

Posted

技术标签:

【中文标题】在 Laravel 中使用 Mailchimp 自动导出订阅者【英文标题】:Automatically export subscribers using Mailchimp in Laravel 【发布时间】:2016-10-29 16:49:04 【问题描述】:

我正在创建一个管理区域,作为一种简单的方式来跟踪我的订阅者。我想要的只是每次有人新订阅我的列表时显示和更新他们的电子邮件地址。如下所示,我希望电子邮件地址位于电子邮件下方。我确信我需要使用某种代码来获取订阅者信息并显示它,但我不确定从哪里获得它。我正在使用 laravel 包https://github.com/skovmand/mailchimp-laravel

这是我的 mailchimp 控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class MailChimpController extends Controller

    public $mailchimp;
    public $listId = '111111111';

    public function __construct(\Mailchimp $mailchimp)
    
        $this->mailchimp = $mailchimp;
    

    public function manageMailChimp()
    
        return view('mailchimp');
    

    public function subscribe(Request $request)
    
        $this->validate($request, [
            'email' => 'required|email',
        ]);

        try 


            $this->mailchimp
            ->lists
            ->subscribe(
                $this->listId,
                ['email' => $request->input('email')]
            );

            return redirect()->back()->with('success','Email Subscribed successfully');

         catch (\Mailchimp_List_AlreadySubscribed $e) 
            return redirect()->back()->with('error','Email is Already Subscribed');
         catch (\Mailchimp_Error $e) 
            return redirect()->back()->with('error','Error from MailChimp');
        
    

这是我想要显示电子邮件地址的 admin.blade.php 文件。

@extends('layouts.app')

@section('content')
<div class="container">
    <h1 class="text-center">Subscribers</h1>
    <table class="table">
        <thead>
            <tr>
                <th>Check</th>
                <th>Email</th>
                <th>City</th>
                <th>Airport</th>
            </tr>
            <tbody>
                <tr>
                    <td></td>
                </tr>
            </tbody>
        </thead>

    </table>
</div>
@endsection

如果我还需要什么,请告诉我。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

为此,您需要访问 MailChimp API。它是一个 REST 服务,所以你可以使用 php-curl 访问。

这是一个例子:

public function getMailChimpList() 
    $mailchimpId = "YOUR_MAILCHIMP_ID";
    $listId = "LIST_ID";
    $apiKey = "YOUR_API_KEY";
    $mailchimpUrl = "https://us11.api.mailchimp.com/3.0";

    //this url may be different, check your API endpoints
    $url = $mailchimpUrl . '/lists//' . $listId . '/members/';
    $header = 'Authorization: apikey ' . $apiKey;

    return self::sendData($url, $header);


private static function sendData($url, $header) 
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array($header, 'Content-Type: application/json'));
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $result = trim(curl_exec($curl));
    curl_close($curl);
    return $result;

【讨论】:

这会进入我的控制器吗? 是的,你不能将它添加到你的控制器中,然后将函数“getMailchimpList()”添加到你的路由中,这样你就可以从浏览器访问。 如果您需要在您的列表中进行其他操作,我建议您阅读 mailchimp API 参考:developer.mailchimp.com/documentation/mailchimp/reference/lists/… 我似乎也收到了这个位 $url = $mailchimpUrl 的错误。 '/列表//' 。 $listId 。 '/成员/'; $header = '授权:apikey' 。 apiKey;使用未定义的常量 apiKey - 假定为 'apiKey' 操作,我的错。正确的行是: $header = 'Authorization: apikey ' 。 $apiKey;

以上是关于在 Laravel 中使用 Mailchimp 自动导出订阅者的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 上的 Mailchimp API,如何在路由中使用它?

在 Laravel 5.2 中使用 mailchimp API

使用 API 将 Mailchimp 集成到 Laravel

Spatie/Newsletter:Laravel 5.6 中提供的 MailChimp 无效 MailChimp API 密钥

在 Laravel 中使用 Mailchimp 自动导出订阅者

Laravel mailchimp 事件属性在模板中为空