使用MailGun创建邮件列表订阅链接

时间:2014-07-20 15:19:12

标签: mailgun

我正在使用私人php heroku repo,并希望创建一个表单,允许我网站上的用户输入他们的电子邮件地址并提交表单并将电子邮件添加到mailgun上的现有邮件列表中。< / p>

我已经联系过MailGun支持,他们已经说过可能并且查看文档。

文档很模糊,我无法自己解决。

你能给我的代码示例是否可能指向我正确的方向?

1 个答案:

答案 0 :(得分:3)

这是思路: *第1步 - 创建一个包含电子邮件列表的邮件列表。 *步骤2 - 创建一个要求用户提供其电子邮件地址的表单,要求他确认使用他的电子邮件,向给定地址发送电子邮件地址以确认订阅。 *

第1步

# Include the Autoloader file (see documentation on how to install the php wrapper)
require 'vendor/autoload.php';
use Mailgun\Mailgun;

# Instantiate the client. Use your APIKey
$mgClient = new Mailgun('key-3ax6xnjp29jd6fds4gc373sgvjxteol0l');

# Issue the call to the client.
$result = $mgClient->post("lists", array(
    'address'     => 'my-user-list@mydomain.org',
    'description' => 'A List of users'
));

这将创建一个名为&#39;用户列表的列表&#39;并且可以使用&#39; my-user-list@mydomain.org'

在内部访问

**步骤2 **

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Widget</title>

</head>
<body>
    <form action="contact.php" method="POST" onsubmit="return check_the_box()">
        <input name="email" type="text" required="yes">
        <a href="#">I've read and agree to the ToS </a>
        <input id="chx" type="checkbox">
        <button type="submit" >Submit</button>
        <span style="display: none" id="pls"> Please check the Terms of Service box</span>
    </form>
    <script type="text/javascript">
    var box = document.getElementById("chx");
    var alrt = document.getElementById("pls");
    function check_the_box(){
        if(!box.checked) {
            alrt.setAttribute("style","display: inline");
            return false

        }
        else {
    return true
        }

    }
</script>
</body>
</html>

然后,您需要从此表单中捕获字段并发送电子邮件:

# Include the Autoloader     require 'vendor/autoload.php';
use Mailgun\Mailgun;

# Instantiate the client.
$mgClient = new Mailgun('key-3ax6xnjp29jd6fds4gc373sgvjxteol0l');
$domain = "mydomain.org";

# Make the call to the client.
$result = $mgClient->sendMessage($domain, array(
    'from'    => 'YOU@mydomain.org',
    'to'      => 'GUYWHOSIGNEDUP@hisdomain.com',
    'subject' => 'Confirmation Email',
    'html'    => 'Please, click this link to confirm you want to be part of my list <a href=\'http://website.com/confirmation.php?authcode=SOMEGENERATEDSTRING\'> CONFIRM </a>'
));

为每个电子邮件地址创建生成的字符串

用户将点击该链接并将被重定向并最终添加到邮件列表中:

第3步

添加到邮件列表

# Include the Autoloader (see "Libraries" for install instructions)
require 'vendor/autoload.php';
use Mailgun\Mailgun;

# Instantiate the client.
$mgClient = new Mailgun('key-3ax6xnjp29jd6fds4gc373sgvjxteol0l');
$listAddress = 'my-user-list@mydomain.org';

# Issue the call to the client.
$result = $mgClient->post("lists/$listAddress/members", array(
    'address'     => 'GUYWHOSIGNEDUP@hisdomain.com',
    'description' => 'Signed up',
    'subscribed'  => true,
));

完成!

您需要做的就是创建每个用户都独有的生成代码,执行类似的操作:

function makeConfirmation($newguy) {
    $confirmCode = md5($newguy.'somestringonlyknowntome');
    return $confirmCode;
}

最后在将他添加到邮件列表之前,我确认点击确认电子邮件时在URL中发送到我服务器的参数

function checkConfirmation($conf,$email) {
    if($conf== md5($email.'somestringonlyknowntome')) {
        return true;
    } else { return false; }
}

相应地编辑..

此外:

这是一个很好的教程,供您在PHP中使用Mailgun的github存储库。

Tutorial for OPTins

祝你好运,如果你成功了,请告诉我! :) 我很乐意收到您的来信,并在mailgun上写一篇关于此的博客!