1

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

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

文档很模糊,我自己无法弄清楚。

您可以给我一些代码示例,这些示例可以为我指明正确的方向吗?

4

1 回答 1

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'
));

这将创建一个名为“用户列表”的列表,并且可以使用“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; }
}

相应地编辑..

此外:

这是一个很好的教程供您学习,可在 Mailgun 的 PHP github 存储库中找到。

OPTins 教程

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

于 2014-09-02T11:19:13.243 回答