使用Postmark with PHP

时间:2015-02-06 19:56:49

标签: php postmark

您好我是php和邮戳的新手,我正在尝试将表单提交设置为我的电子邮件。我有电子邮件工作,但我无法显示标题("位置:thanks.php)页面。任何帮助将不胜感激。感谢。

require("postmark.php");

$postmark = new Postmark("API KEY","calvin.hemington@example.com","$email");

if($postmark->to("calvin.hemington@example.com")->subject("Mission Woodshop | " . $name)->plain_message($email_body)->send()){
    exit;
}


header("Location: thanks.php");
exit;

<?php

/**
 * This is a simple library for sending emails with Postmark created by Matthew Loberg (http://mloberg.com)
 */

class Postmark{

    private $api_key;
    private $data = array();

    function __construct($apikey,$from,$reply=""){
        $this->api_key = $apikey;
        $this->data["From"] = $from;
        $this->data["ReplyTo"] = $reply;
    }

    function send(){
        $headers = array(
            "Accept: application/json",
            "Content-Type: application/json",
            "X-Postmark-Server-Token: {$this->api_key}"
        );
        $data = $this->data;
        $ch = curl_init('http://api.postmarkapp.com/email');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $return = curl_exec($ch);
        $curl_error = curl_error($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        // do some checking to make sure it sent
        if($http_code !== 200){
            return false;
        }else{
            return true;
        }
    }

    function to($to){
        $this->data["To"] = $to;
        return $this;
    }

    function subject($subject){
        $this->data["subject"] = $subject;
        return $this;
    }

    function html_message($body){
        $this->data["HtmlBody"] = "<html><body>{$body}</body></html>";
        return $this;
    }

    function plain_message($msg){
        $this->data["TextBody"] = $msg;
        return $this;
    }

    function tag($tag){
        $this->data["Tag"] = $tag;
        return $this;
    }

}

2 个答案:

答案 0 :(得分:1)

大概$postmark->send()在工作时返回true。你的if / then语句说'发送成功时退出'。

如果将header()调用移动到if / then,它应该按预期工作。您还需要处理$postmark->to调用失败的情况,可能会在此时重定向到错误页面。

答案 1 :(得分:1)

使用我们新的官方支持的lib可能更容易,它提供了API调用响应的完整详细信息。 http://developer.postmarkapp.com/developer-official-libs.html#php