首页 文章

简单的PHP功能,用Mandrill发送电子邮件

提问于
浏览
27

通过Mailchimp的Mandrill服务(使用API)发送电子邮件的最简单方法是什么?

这是发送方法:https://mandrillapp.com/api/docs/messages.html#method=send

这是API包装器:https://bitbucket.org/mailchimp/mandrill-api-php/src/fe07e22a703314a51f1ab0804018ed32286a9504/src?at=master

但我无法弄清楚如何制作一个PHP函数,它将通过Mandrill发送和发送电子邮件 .

有人可以帮忙吗?

5 回答

  • 1

    我们还有一个适用于PHP的官方API包装器,它可以通过on Bitbucket或通过Packagist获得,它包含了Mandrill API .

    如果您的Mandrill API密钥存储为环境变量,这里是一个使用模板发送的简单示例,包含一些合并变量和元数据:

    <?php
    require 'Mandrill.php';
    
    $mandrill = new Mandrill(); 
    
    // If are not using environment variables to specific your API key, use:
    // $mandrill = new Mandrill("YOUR_API_KEY")
    
    $message = array(
        'subject' => 'Test message',
        'from_email' => 'you@yourdomain.com',
        'html' => '<p>this is a test message with Mandrill\'s PHP wrapper!.</p>',
        'to' => array(array('email' => 'recipient1@domain.com', 'name' => 'Recipient 1')),
        'merge_vars' => array(array(
            'rcpt' => 'recipient1@domain.com',
            'vars' =>
            array(
                array(
                    'name' => 'FIRSTNAME',
                    'content' => 'Recipient 1 first name'),
                array(
                    'name' => 'LASTNAME',
                    'content' => 'Last name')
        ))));
    
    $template_name = 'Stationary';
    
    $template_content = array(
        array(
            'name' => 'main',
            'content' => 'Hi *|FIRSTNAME|* *|LASTNAME|*, thanks for signing up.'),
        array(
            'name' => 'footer',
            'content' => 'Copyright 2012.')
    
    );
    
    print_r($mandrill->messages->sendTemplate($template_name, $template_content, $message));
    
    ?>
    
  • 3

    Mandrill对所有API方法都采用HTTP POST 请求,并将输入作为JSON字符串 . 这是发送电子邮件的基本示例 . 它使用 cURL 来执行HTTP请求:

    $uri = 'https://mandrillapp.com/api/1.0/messages/send.json';
    
    $postString = '{
    "key": "YOUR KEY HERE",
    "message": {
        "html": "this is the emails html content",
        "text": "this is the emails text content",
        "subject": "this is the subject",
        "from_email": "someone@example.com",
        "from_name": "John",
        "to": [
            {
                "email": "blah@example.com",
                "name": "Bob"
            }
        ],
        "headers": {
    
        },
        "track_opens": true,
        "track_clicks": true,
        "auto_text": true,
        "url_strip_qs": true,
        "preserve_recipients": true,
    
        "merge": true,
        "global_merge_vars": [
    
        ],
        "merge_vars": [
    
        ],
        "tags": [
    
        ],
        "google_analytics_domains": [
    
        ],
        "google_analytics_campaign": "...",
        "metadata": [
    
        ],
        "recipient_metadata": [
    
        ],
        "attachments": [
    
        ]
    },
    "async": false
    }';
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $uri);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
    
    $result = curl_exec($ch);
    
    echo $result;
    
  • 6
    // Simply Send Email Via Mandrill...
    
    require_once 'Mandrill.php';
    $mandrill = new Mandrill($apikey);
    
    $message = new stdClass();
    $message->html = "html message";
    $message->text = "text body";
    $message->subject = "email subject";
    $message->from_email = "address@test.com";
    $message->from_name  = "From Name";
    $message->to = array(array("email" => "recipient@test.com"));
    $message->track_opens = true;
    
    $response = $mandrill->messages->send($message);
    
  • 62

    这是我能给你的最基本的代码,我只是在几秒钟之前为客户制作它并且它工作顺利 .

    require_once 'path/to/your/mandrill/file/Mandrill.php';
     try {
        $mandrill = new Mandrill('your-API-key');
        $message = array(
            'html' => $htmlMessage,
            'subject' => $subject,
            'from_email' => $fromEmail,
            'from_name' => $fromName,
            'to' => array(
                array(
                    'email' => $toEmail,
                    'name' =>  $toName,
                    'type' => 'to'
                )
            )
        );
        $result = $mandrill->messages->send($message);
        print_r($result);
    } catch(Mandrill_Error $e) {
        echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
        throw $e;
    }
    

    还要检查他们的发送方法,以获取更多选项,例如 Headers ,元数据,附件等 . https://mandrillapp.com/api/docs/messages.php.html#method-send

  • 22

相关问题