通过 API 在 MailGun 中订阅一批电子邮件地址
Subscribing a batch of email addresses in MailGun via API
在发送一批新的电子邮件地址以订阅我的邮寄列表时,出现致命错误。
我从 https://documentation.mailgun.com/en/latest/api-mailinglists.html#examples 的 Mailgun API 文档中 "Add multiple mailing list members (limit 1,000 per call)" 下的示例中借用了代码
我的数组看起来像示例。
我的阵列:
array:2 [▼
"members" => array:1 [▼
0 => "[{"name":"Someone","address":"sub1@example.com","vars":"{\"subscriber_id\":33}"},{"name":"Ellem","address":"sub2@example.com","vars":"{\"subscriber_id\":34}"},{"name":"Enno","address":"sub3@example.com","vars":"{\"subscriber_id\":35}"},{"name":"Nick","address":"sub4@example.com","vars":"{\"subscriber_id\":36}"},{"name":"Carl","address":"sub5@example.com","vars":"{\"subscriber_id\":37}"},{"name":"Tammy","address":"sub6@example.com","vars":"{\"subscriber_id\":38}"},{"name":"Janis","address":"sub7@example.com","vars":"{\"subscriber_id\":39}"}]"
]
"upsert" => true
]
以及我正在拨打的电话:
$mgClient = new Mailgun($MAILGUN_SECRET);
$result = $mgClient->post("lists/$listAddress/members.json", $myarray);
我收到以下错误:
First argument to Stream::create() must be a string, resource or StreamInterface. {"userId":1,"email":"sub1@example.com","exception":"[object] (InvalidArgumentException(code: 0): First argument to Stream::create() must be a string, resource or StreamInterface. at /home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/nyholm/psr7/src/Stream.php:87)
这是堆栈跟踪中似乎相关的部分:
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/nyholm/psr7/src/Factory/HttplugFactory.php(29):
Nyholm\Psr7\Stream::create(true)
#1
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/php-http/multipart-stream-builder/src/MultipartStreamBuilder.php(61):
Nyholm\Psr7\Factory\HttplugFactory->createStream(true)
#2
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Connection/RestClient.php(98):
Http\Message\MultipartStream\MultipartStreamBuilder->addResource('upsert',
true, Array)
#3
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Connection/RestClient.php(179):
Mailgun\Connection\RestClient->send('POST', 'lists/devtest@n...',
Array, Array)
#4
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Mailgun.php(208):
Mailgun\Connection\RestClient->post('lists/devtest@n...', Array,
Array)
#5
/home/SECRET.cloudwaysapps.com/SECRET/public_html/app/Http/Controllers/SubscribersController.php(591):
Mailgun\Mailgun->post('lists/devtest@n...', Array)
#6
[internal function]:
App\Http\Controllers\SubscribersController->processUpload(Object(Illuminate\Http\Request))
对于我哪里出错的任何指导,我将不胜感激。我应该创建并附加 members.json 文件吗?
我无法使用 post 方法让它工作。另一个人在使用不同的 post 命令时遇到了麻烦,建议使用助手,很难找到相关文档。但我拼凑了这个解决方案:
首先,我为新成员创建了一个数组:
$sarray = [];
$sarray["name"] = $name;
$sarray["address"] = $email;
$sarray["vars"] = array('subscriber_id'=>$id);
并将它们捆绑成一个成员数组数组,$combinedarray
然后我调用了createMultiple方法:
$mgClient = Mailgun::create($MAILGUN_API_KEY);
$result = $mgClient->mailingList()->member()->createMultiple($listaddress,$combinedarray,'no');
$result 是一个 UpdateResponse 对象,它有一个 public getMessage 方法,所以
$message = $result->getMessage();
得到了我需要的东西。现在看来很简单,我已经把它归结了,但是找到这些信息是一个挑战! (我认为 Mailgun 正在更新 API 和文档,所以这个解决方案可能很快就会在文档中更容易找到。)
在发送一批新的电子邮件地址以订阅我的邮寄列表时,出现致命错误。
我从 https://documentation.mailgun.com/en/latest/api-mailinglists.html#examples 的 Mailgun API 文档中 "Add multiple mailing list members (limit 1,000 per call)" 下的示例中借用了代码 我的数组看起来像示例。
我的阵列:
array:2 [▼
"members" => array:1 [▼
0 => "[{"name":"Someone","address":"sub1@example.com","vars":"{\"subscriber_id\":33}"},{"name":"Ellem","address":"sub2@example.com","vars":"{\"subscriber_id\":34}"},{"name":"Enno","address":"sub3@example.com","vars":"{\"subscriber_id\":35}"},{"name":"Nick","address":"sub4@example.com","vars":"{\"subscriber_id\":36}"},{"name":"Carl","address":"sub5@example.com","vars":"{\"subscriber_id\":37}"},{"name":"Tammy","address":"sub6@example.com","vars":"{\"subscriber_id\":38}"},{"name":"Janis","address":"sub7@example.com","vars":"{\"subscriber_id\":39}"}]"
]
"upsert" => true
]
以及我正在拨打的电话:
$mgClient = new Mailgun($MAILGUN_SECRET);
$result = $mgClient->post("lists/$listAddress/members.json", $myarray);
我收到以下错误:
First argument to Stream::create() must be a string, resource or StreamInterface. {"userId":1,"email":"sub1@example.com","exception":"[object] (InvalidArgumentException(code: 0): First argument to Stream::create() must be a string, resource or StreamInterface. at /home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/nyholm/psr7/src/Stream.php:87)
这是堆栈跟踪中似乎相关的部分:
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/nyholm/psr7/src/Factory/HttplugFactory.php(29): Nyholm\Psr7\Stream::create(true)
#1
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/php-http/multipart-stream-builder/src/MultipartStreamBuilder.php(61): Nyholm\Psr7\Factory\HttplugFactory->createStream(true)
#2
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Connection/RestClient.php(98): Http\Message\MultipartStream\MultipartStreamBuilder->addResource('upsert', true, Array)
#3
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Connection/RestClient.php(179): Mailgun\Connection\RestClient->send('POST', 'lists/devtest@n...', Array, Array)
#4
/home/SECRET.cloudwaysapps.com/SECRET/public_html/vendor/mailgun/mailgun-php/src/Mailgun/Mailgun.php(208): Mailgun\Connection\RestClient->post('lists/devtest@n...', Array, Array)
#5
/home/SECRET.cloudwaysapps.com/SECRET/public_html/app/Http/Controllers/SubscribersController.php(591): Mailgun\Mailgun->post('lists/devtest@n...', Array)
#6
[internal function]: App\Http\Controllers\SubscribersController->processUpload(Object(Illuminate\Http\Request))
对于我哪里出错的任何指导,我将不胜感激。我应该创建并附加 members.json 文件吗?
我无法使用 post 方法让它工作。另一个人在使用不同的 post 命令时遇到了麻烦,建议使用助手,很难找到相关文档。但我拼凑了这个解决方案:
首先,我为新成员创建了一个数组:
$sarray = [];
$sarray["name"] = $name;
$sarray["address"] = $email;
$sarray["vars"] = array('subscriber_id'=>$id);
并将它们捆绑成一个成员数组数组,$combinedarray
然后我调用了createMultiple方法:
$mgClient = Mailgun::create($MAILGUN_API_KEY);
$result = $mgClient->mailingList()->member()->createMultiple($listaddress,$combinedarray,'no');
$result 是一个 UpdateResponse 对象,它有一个 public getMessage 方法,所以
$message = $result->getMessage();
得到了我需要的东西。现在看来很简单,我已经把它归结了,但是找到这些信息是一个挑战! (我认为 Mailgun 正在更新 API 和文档,所以这个解决方案可能很快就会在文档中更容易找到。)