Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Mail sending management
- *
- * @author Darth Killer
- */
- class Mailer {
- const HEADER_ABUSE_REPORTS_TO = 'Abuse-Reports-To',
- HEADER_ALSO_CONTROL = 'Also-Control',
- HEADER_ALTERNATE_RECIPIENT = 'Alternate-Recipient',
- HEADER_APPARENTLY_TO = 'Apparently-To',
- HEADER_APPROVED = 'Approved',
- HEADER_APPROVED_BY = 'Approved-By',
- HEADER_ARTICLE_NAMES = 'Article-Names',
- HEADER_ARTICLE_UPDATES = 'Article-Updates',
- HEADER_AUTOFORWARDED = 'Autoforwarded',
- HEADER_AUTO_FORWARDED = 'Auto-Forwarded',
- HEADER_BCC = 'Bcc',
- HEADER_CACHE_POST_PATH = 'Cache-Post-Path',
- HEADER_CC = 'Cc',
- HEADER_COMMENTS = 'Comments',
- HEADER_CONTENT_ALIAS = 'Content-Alias',
- HEADER_CONTENT_ALTERNATIVE = 'Content-Alternative',
- HEADER_CONTENT_BASE = 'Content-Base',
- HEADER_CONTENT_CLASS = 'Content-Class',
- HEADER_CONTENT_CONVERSION = 'Content-Conversion',
- HEADER_CONTENT_DESCRIPTION = 'Content-Description',
- HEADER_CONTENT_DISPOSITION = 'Content-Disposition',
- HEADER_CONTENT_FEATURES = 'Content-Features',
- HEADER_CONTENT_ID = 'Content-ID',
- HEADER_CONTENT_IDENTIFIER = 'Content-Identifier',
- HEADER_CONTENT_LANGUAGE = 'Content-Language',
- HEADER_CONTENT_LENGTH = 'Content-Length',
- HEADER_CONTENT_LOCATION = 'Content-Location',
- HEADER_CONTENT_MD5 = 'Content-MD5',
- HEADER_CONTENT_RETURN = 'Content-Return',
- HEADER_CONTENT_SGML_ENTITY = 'Content-SGML-Entity',
- HEADER_CONTENT_TRANSFER_ENCODING = 'Content-Transfer-Encoding',
- HEADER_CONTENT_TYPE = 'Content-Type',
- HEADER_CONTROL = 'Control',
- HEADER_CONVERSION = 'Conversion',
- HEADER_CONVERSION_WITH_LOSS = 'Conversion-With-Loss',
- HEADER_DATE = 'Date',
- HEADER_DELIVERED_TO = 'Delivered-To',
- HEADER_DELIVERY_DATE = 'Delivery-Date',
- HEADER_DISCARDED_X400_IPMS_EXTENSIONS = 'Discarded-X400-IPMS-Extensions',
- HEADER_DISCARDED_X400_MTS_EXTENSIONS = 'Discarded-X400-MTS-Extensions',
- HEADER_DISCLOSE_RECIPIENTS = 'Disclose-Recipients',
- HEADER_DISPOSITION_NOTIFICATION_OPTIONS = 'Disposition-Notification-Options',
- HEADER_DISPOSITION_NOTIFICATION_TO = 'Disposition-Notification-To',
- HEADER_DISTRIBUTION = 'Distribution',
- HEADER_DL_EXPANSION_HISTORY_INDICATION = 'DL-Expansion-History-Indication',
- HEADER_ENCODING = 'Encoding',
- HEADER_ERRORS_TO = 'Errors-To',
- HEADER_ENVELOPE_ID = 'Envelope-ID',
- HEADER_EXPIRES = 'Expires',
- HEADER_EXPIRY_DATE = 'Expiry-Date',
- HEADER_FAX = 'Fax',
- HEADER_FCC = 'Fcc',
- HEADER_FOLLOWUP_TO = 'Followup-To',
- HEADER_FOR_APPROVAL = 'For-Approval',
- HEADER_FOR_COMMENT = 'For-Comment',
- HEADER_FOR_HANDLING = 'For-Handling',
- HEADER_FROM = 'From',
- HEADER_GENERATE_DELIVERY_REPORT = 'Generate-Delivery-Report',
- HEADER_IMPORTANCE = 'Importance',
- HEADER_IN_REPLY_TO = 'In-Reply-To',
- HEADER_INCOMPLETE_COPY = 'Incomplete-Copy',
- HEADER_INJECTOR_INFO = 'Injector-Info',
- HEADER_KEYWORDS = 'Keywords',
- HEADER_LANGUAGE = 'Language',
- HEADER_LINES = 'Lines',
- HEADER_LIST_ARCHIVE = 'List-Archive',
- HEADER_LIST_DIGEST = 'List-Digest',
- HEADER_LIST_ID = 'List-ID',
- HEADER_LIST_OWNER = 'List-Owner',
- HEADER_LIST_POST = 'List-Post',
- HEADER_LIST_SOFTWARE = 'List-Software',
- HEADER_LIST_SUBSCRIBE = 'List-Subscribe',
- HEADER_LIST_UNSUBSCRIBE = 'List-Unsubscribe',
- HEADER_LIST_URL = 'List-URL',
- HEADER_MAIL_COPIES_TO = 'Mail-Copies-To',
- HEADER_MAIL_REPLY_REQUESTED_BY = 'Mail-Reply-Requested-By',
- HEADER_MAIL_SYSTEM_VERSION = 'Mail-System-Version',
- HEADER_MAILER = 'Mailer',
- HEADER_MAILING_LIST = 'Mailing-List',
- HEADER_MESSAGE_ID = 'Message-ID',
- HEADER_MESSAGE_TYPE = 'Message-Type',
- HEADER_MIME_VERSION = 'MIME-Version',
- HEADER_NEWSGROUPS = 'Newsgroups',
- HEADER_NNTP_POSTING_DATE = 'NNTP-Posting-Date',
- HEADER_NNTP_POSTING_HOST = 'NNTP-Posting-Host',
- HEADER_NNTP_POSTING_TIME = 'NNTP-Posting-Time',
- HEADER_NNTP_PROXY_RELAY = 'NNTP-Proxy-Relay',
- HEADER_OBSOLETES = 'Obsoletes',
- HEADER_OLD_DATE = 'Old-Date',
- HEADER_OLD_X_ENVELOPE_FROM = 'Old-X-Envelope-From',
- HEADER_OLD_X_ENVELOPE_TO = 'Old-X-Envelope-To',
- HEADER_ORGANISATION = 'Organisation',
- HEADER_ORGANIZATION = 'Organization',
- HEADER_ORIGINAL_ENCODED_INFORMATION_TYPES = 'Original-Encoded-Information-Types',
- HEADER_ORIGINAL_RECIPIENT = 'Original-Recipient',
- HEADER_ORIGINATING_CLIENT = 'Originating-Client',
- HEADER_ORIGINATOR = 'Originator',
- HEADER_ORIGINATOR_INFO = 'Originator-Info',
- HEADER_PATH = 'Path',
- HEADER_PHONE = 'Phone',
- HEADER_PICS_LABEL = 'PICS-Label',
- HEADER_POSTED_TO = 'Posted-To',
- HEADER_PRECEDENCE = 'Precedence',
- HEADER_PREVENT_NONDELIVERY_REPORT = 'Prevent-NonDelivery-Report',
- HEADER_PRIORITY = 'Priority',
- HEADER_READ_RECEIPT_TO = 'Read-Receipt-To',
- HEADER_RECEIVED = 'Received',
- HEADER_REFERENCES = 'References',
- HEADER_REPLACES = 'Replaces',
- HEADER_REPLY_BY = 'Reply-By',
- HEADER_REPLY_TO = 'Reply-To',
- HEADER_RESENT_BCC = 'Resent-bcc',
- HEADER_RESENT_CC = 'Resent-cc',
- HEADER_RESENT_DATE = 'Resent-Date',
- HEADER_RESENT_FROM = 'Resent-From',
- HEADER_RESENT_MESSAGE_ID = 'Resent-Message-ID',
- HEADER_RESENT_REPLY_TO = 'Resent-Reply-To',
- HEADER_RESENT_SENDER = 'Resent-Sender',
- HEADER_RESENT_SUBJECT = 'Resent-Subject',
- HEADER_RESENT_TO = 'Resent-To',
- HEADER_RETURN_PATH = 'Return-Path',
- HEADER_RETURN_RECEIPT_REQUESTED = 'Return-Receipt-Requested',
- HEADER_RETURN_RECEIPT_TO = 'Return-Receipt-To',
- HEADER_SEE_ALSO = 'See-Also',
- HEADER_SENDER = 'Sender',
- HEADER_SENSITIVITY = 'Sensitivity',
- HEADER_SPEECH_ACT = 'Speech-Act',
- HEADER_STATUS = 'Status',
- HEADER_SUBJECT = 'Subject',
- HEADER_SUMMARY = 'Summary',
- HEADER_SUPERSEDES = 'Supersedes',
- HEADER_TELEFAX = 'Telefax',
- HEADER_TO = 'To',
- HEADER_TRANSLATED_BY = 'Translated-By',
- HEADER_TRANSLATION_OF = 'Translation-Of',
- HEADER_USER_AGENT = 'User-Agent',
- HEADER_X_ABUSE_INFO = 'X-Abuse-Info',
- HEADER_X_ACCEPT_LANGUAGE = 'X-Accept-Language',
- HEADER_X_ADMIN = 'X-Admin',
- HEADER_X_ARTICLE_CREATION_DATE = 'X-Article-Creation-Date',
- HEADER_X_ATTRIBUTION = 'X-Attribution',
- HEADER_X_AUTHENTICATED_IP = 'X-Authenticated-IP',
- HEADER_X_AUTHENTICATED_SENDER = 'X-Authenticated-Sender',
- HEADER_X_AUTHENTICATION_WARNING = 'X-Authentication-Warning',
- HEADER_X_CACHE = 'X-Cache',
- HEADER_X_COMMENTS = 'X-Comments',
- HEADER_X_COMPLAINTS_TO = 'X-Complaints-To',
- HEADER_X_CONFIRM_READING_TO = 'X-Confirm-reading-to',
- HEADER_X_ENVELOPE_FROM = 'X-Envelope-From',
- HEADER_X_ENVELOPE_TO = 'X-Envelope-To',
- HEADER_X_FACE = 'X-Face',
- HEADER_X_FLAGS = 'X-Flags',
- HEADER_X_FOLDER = 'X-Folder',
- HEADER_X_HTTP_PROXY = 'X-Http-Proxy',
- HEADER_X_HTTP_USER_AGENT = 'X-Http-User-Agent',
- HEADER_X_IMAP = 'X-IMAP',
- HEADER_X_LAST_UPDATED = 'X-Last-Updated',
- HEADER_X_LIST_HOST = 'X-List-Host',
- HEADER_X_LISTSERVER = 'X-Listserver',
- HEADER_X_LOOP = 'X-Loop',
- HEADER_X_MAILER = 'X-Mailer',
- HEADER_X_MAILER_INFO = 'X-Mailer-Info',
- HEADER_X_MAILING_LIST = 'X-Mailing-List',
- HEADER_X_MIME_AUTOCONVERTED = 'X-MIME-Autoconverted',
- HEADER_X_MIMEOLE = 'X-MimeOLE',
- HEADER_X_MIMETRACK = 'X-MIMETrack',
- HEADER_X_MSMAIL_PRIORITY = 'X-MSMail-Priority',
- HEADER_X_MYDEJA_INFO = 'X-MyDeja-Info',
- HEADER_X_NEWSREADER = 'X-Newsreader',
- HEADER_X_NNTP_POSTING_HOST = 'X-NNTP-Posting-Host',
- HEADER_X_NO_ARCHIVE = 'X-No-Archive',
- HEADER_X_NOTICE = 'X-Notice',
- HEADER_X_ORIG_MESSAGE_ID = 'X-Orig-Message-ID',
- HEADER_X_ORIGINAL_ENVELOPE_FROM = 'X-Original-Envelope-From',
- HEADER_X_ORIGINAL_NNTP_POSTING_HOST = 'X-Original-NNTP-Posting-Host',
- HEADER_X_ORIGINAL_TRACE = 'X-Original-Trace',
- HEADER_X_ORIGINALARRIVALTIME = 'X-OriginalArrivalTime',
- HEADER_X_ORIGINATING_IP = 'X-Originating-IP',
- HEADER_X_PMFLAGS = 'X-PMFLAGS',
- HEADER_X_POSTED_BY = 'X-Posted-By',
- HEADER_X_POSTING_AGENT = 'X-Posting-Agent',
- HEADER_X_PRIORITY = 'X-Priority',
- HEADER_X_RCPT_TO = 'X-RCPT-TO',
- HEADER_X_REPORT = 'X-Report',
- HEADER_X_REPORT_ABUSE_TO = 'X-Report-Abuse-To',
- HEADER_X_SENDER = 'X-Sender',
- HEADER_X_SERVER_DATE = 'X-Server-Date',
- HEADER_X_TRACE = 'X-Trace',
- HEADER_X_UIDL = 'X-UIDL',
- HEADER_X_UML_SEQUENCE = 'X-UML-Sequence',
- HEADER_X_URI = 'X-URI',
- HEADER_X_URL = 'X-URL',
- HEADER_X_X_SENDER = 'X-X-Sender',
- HEADER_X400_CONTENT_RETURN = 'X400-Content-Return',
- HEADER_XPIDENT = 'XPident',
- HEADER_XREF = 'Xref';
- protected $to,
- $subject,
- $message,
- $headers = array();
- public function __construct($to, $subject, $message) {
- $this->setTo($to);
- $this->setSubject($subject);
- $this->setMessage($message);
- $this->addHeader(self::HEADER_TO, $this->to);
- $this->addHeader(self::HEADER_SUBJECT, $this->subject);
- }
- public function addHeader($tag, $value) {
- $oClass = new ReflectionClass(__CLASS__);
- // case fix (because optional headers are allowed
- if(in_array($constant = 'HEADER_' . str_replace('-', '_', strtoupper($tag)), $oClass->getConstants())) $tag = self::$constant;
- // delete final semi-colon
- if(substr($tag, strlen($tag) - 1) == ':')
- $tag = substr($tag, 0, strlen($tag) - 1);
- // save header
- $this->headers[$tag] = $value;
- }
- public function send() {
- $headers = $this->headers;
- array_walk($headers, function($val, $key) {return "$key: $val";});
- return mail($this->to, $this->subject, $this->message, implode("\r\n", $headers) . "\r\n");
- }
- // Setters
- public function setTo($to) {
- $this->notEmptyString('to', $to);
- $this->to = $to;
- }
- public function setSubject($subject) {
- $this->notEmptyString('subject', $subject);
- $this->subject = $subject;
- }
- public function setMessage($message) {
- $this->notEmptyString('message', $message);
- $this->message = $message;
- }
- protected function notEmptyString($var, $value) {
- if(!is_string($value) or empty($value)) {
- $msg = __CLASS__ . "::\$$var : Not Empty String excepted";
- throw new InvalidArgumentException($msg);
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement