php 带附件的简单邮戳PHP类。需要邮戳帐户(http://postmarkapp.com)和php库(https://gist.github.co

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 带附件的简单邮戳PHP类。需要邮戳帐户(http://postmarkapp.com)和php库(https://gist.github.co相关的知识,希望对你有一定的参考价值。

<?php

/**
* This is a simple library for sending emails with Postmark.
* Created by Matthew Loberg (http://mloberg.com), extended and modified by Drew Johnston (http://drewjoh.com).
*/

class Postmark {

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

	function __construct($key, $from, $reply = '')
	{
		$this->api_key = $key;
		$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
		);
		
		$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($this->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 cc($cc)
	{
		$this->data["Cc"] = $cc;
		return $this;
	}
	
	function bcc($bcc)
	{
		$this->data["Bcc"] = $bcc;
		return $this;
	}
		
	function subject($subject)
	{
		$this->data['Subject'] = $subject;
		return $this;
	}

	function html_message($html)
	{
		$this->data['HtmlBody'] = $html;
		return $this;
	}

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

	function tag($tag)
	{
		$this->data['Tag'] = $tag;
		return $this;
	}
	
	function attachment($name, $content, $content_type)
	{
		$this->data['Attachments'][$this->attachment_count]['Name']		= $name;
		$this->data['Attachments'][$this->attachment_count]['ContentType']	= $content_type;
		
		// Check if our content is already base64 encoded or not
		if( ! base64_decode($content, true))
			$this->data['Attachments'][$this->attachment_count]['Content']	= base64_encode($content);
		else
			$this->data['Attachments'][$this->attachment_count]['Content']	= $content;
		
		// Up our attachment counter
		$this->attachment_count++;
		
		return $this;
	}

}
<?php

	require("postmark.php");
	
	$postmark = new Postmark("your-api-key","from-email","optional-reply-to-address");
	
	$result = $postmark->to("reciver@example.com")
		->subject("Email Subject")
		->plain_message("This is a plain text message.")
		->attachment('File.pdf', $file_as_string, 'application/pdf')
		->send();
	
	if($result === true)
		echo "Message sent";

以上是关于php 带附件的简单邮戳PHP类。需要邮戳帐户(http://postmarkapp.com)和php库(https://gist.github.co的主要内容,如果未能解决你的问题,请参考以下文章

所有通过邮戳发送的电子邮件都在邮戳服务器上排队

我可以使用邮戳创建主题回复吗?

JOISC 2014 邮戳拉力赛(基础DP)

Rails, Devise, Postmark Gem - 使用邮戳模板设计邮件

11.3 商标法解读

邮戳:发送带有模板的电子邮件