diff --git a/MultiMailer/MultiMailer.php b/MultiMailer/MultiMailer.php index 9193973..6bfb740 100644 --- a/MultiMailer/MultiMailer.php +++ b/MultiMailer/MultiMailer.php @@ -1,7 +1,7 @@ setDbModel) && is_string($this->setDbModel)) { - foreach ($this->_defaultColumns as $key => $value) { if (!isset($this->setDbModelColumns[$key])) { $this->setDbModelColumns[$key] = $value; @@ -686,18 +685,13 @@ protected function _processBody() protected function _saveModel() { foreach ($this->_addresses as $address) { - try { $this->_model = new $this->setDbModel; if ($this->_model) { - foreach ($this->setDbModelColumns as $key => $value) { - if ($key != self::KEY_OTHERS) { - if (!is_null($value) || $value !== false) { - switch ($key) { case self::COLUMN_EMAIL: $emailProperty = $address['email']; @@ -784,6 +778,7 @@ public function altbody($altbody) /** * Adds an attachment from a path on the filesystem for initialised object. * Returns false if the file could not be found or read. + * THIS METHOD CANNOT BE CHAINED WITH OTHERS. * @param string $path path to the attachment. * @param string $name overrides the attachment name. * @param string $encoding file encoding (options: "8bit", "7bit", "binary", @@ -797,16 +792,13 @@ public function altbody($altbody) public function attachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') { if ($this->_initState) { - try { return $this->getPhpmailer()->addAttachment($path, $name, $encoding, $type, $disposition); } catch (phpmailerException $e) { - $this->setMultiError($e->errorMessage()); } catch (Exception $e) { - $this->setMultiError($e->getMessage()); } } @@ -818,6 +810,7 @@ public function attachment($path, $name = '', $encoding = 'base64', $type = '', * Adds the list of attachments from a path on the filesystem for * initialised object. * Returns false if one of the files could not be found or read. + * THIS METHOD CANNOT BE CHAINED WITH OTHERS. * @param array $attachments arrays of files data * @see attachment() * @see PHPMailer::addAttachment() @@ -827,7 +820,6 @@ public function attachment($path, $name = '', $encoding = 'base64', $type = '', public function attachments($attachments) { if ($this->_initState) { - try { foreach ($attachments as $attachment) { if (!$this->getPhpmailer()->addAttachment( @@ -841,15 +833,12 @@ public function attachments($attachments) return false; } } - return true; } catch (phpmailerException $e) { - $this->setMultiError($e->errorMessage()); } catch (Exception $e) { - $this->setMultiError($e->getMessage()); } } @@ -1108,7 +1097,6 @@ public function replyto($address, $name = '', $skipInit = false) public function send() { if ($this->_initState) { - try { $this->_processBody(); @@ -1122,11 +1110,9 @@ public function send() return true; } catch (phpmailerException $e) { - $this->setMultiError($e->errorMessage()); } catch (Exception $e) { - $this->setMultiError($e->getMessage()); } } @@ -1347,4 +1333,4 @@ public function tos($addresses) return $this; } -} \ No newline at end of file +} diff --git a/MultiMailer/PHPMailer-5.2.10/VERSION b/MultiMailer/PHPMailer-5.2.10/VERSION deleted file mode 100644 index b4e0879..0000000 --- a/MultiMailer/PHPMailer-5.2.10/VERSION +++ /dev/null @@ -1 +0,0 @@ -5.2.10 \ No newline at end of file diff --git a/MultiMailer/PHPMailer-5.2.10/.gitignore b/MultiMailer/PHPMailer/.gitignore similarity index 90% rename from MultiMailer/PHPMailer-5.2.10/.gitignore rename to MultiMailer/PHPMailer/.gitignore index d3c6c62..e1294ab 100644 --- a/MultiMailer/PHPMailer-5.2.10/.gitignore +++ b/MultiMailer/PHPMailer/.gitignore @@ -4,3 +4,4 @@ test/testbootstrap.php test/*.pem .idea build/ +vendor/ diff --git a/MultiMailer/PHPMailer-5.2.10/.scrutinizer.yml b/MultiMailer/PHPMailer/.scrutinizer.yml similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/.scrutinizer.yml rename to MultiMailer/PHPMailer/.scrutinizer.yml diff --git a/MultiMailer/PHPMailer-5.2.10/.travis.yml b/MultiMailer/PHPMailer/.travis.yml similarity index 80% rename from MultiMailer/PHPMailer-5.2.10/.travis.yml rename to MultiMailer/PHPMailer/.travis.yml index e6c6d34..c111d5e 100644 --- a/MultiMailer/PHPMailer-5.2.10/.travis.yml +++ b/MultiMailer/PHPMailer/.travis.yml @@ -9,7 +9,6 @@ php: matrix: allow_failures: - - php: 7.0 - php: hhvm before_install: @@ -25,9 +24,7 @@ before_script: - sudo mkdir -p /var/qmail/bin - sudo cp fakesendmail.sh /var/qmail/bin/sendmail - sudo cp fakesendmail.sh /usr/sbin/sendmail - - echo 'sendmail_path = "/usr/sbin/sendmail -t -i "' | sudo tee "/home/travis/.phpenv/versions/`php -r 'echo PHP_VERSION;'`/etc/conf.d/sendmail.ini" - - pwd - - ls -al + - echo 'sendmail_path = "/usr/sbin/sendmail -t -i "' > $(php --ini|grep -m 1 "ini files in:"|cut -d ":" -f 2)/sendmail.ini script: - phpunit --configuration ../travis.phpunit.xml.dist after_script: diff --git a/MultiMailer/PHPMailer-5.2.10/LICENSE b/MultiMailer/PHPMailer/LICENSE similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/LICENSE rename to MultiMailer/PHPMailer/LICENSE diff --git a/MultiMailer/PHPMailer-5.2.10/PHPMailerAutoload.php b/MultiMailer/PHPMailer/PHPMailerAutoload.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/PHPMailerAutoload.php rename to MultiMailer/PHPMailer/PHPMailerAutoload.php diff --git a/MultiMailer/PHPMailer-5.2.10/README.md b/MultiMailer/PHPMailer/README.md similarity index 88% rename from MultiMailer/PHPMailer-5.2.10/README.md rename to MultiMailer/PHPMailer/README.md index ad63ef2..cd46548 100644 --- a/MultiMailer/PHPMailer-5.2.10/README.md +++ b/MultiMailer/PHPMailer/README.md @@ -11,12 +11,12 @@ Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](h ## Class Features - Probably the world's most popular code for sending email from PHP! -- Used by many open-source projects: Wordpress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more +- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more - Integrated SMTP support - send without a local mail server - Send emails with multiple TOs, CCs, BCCs and REPLY-TOs - Multipart/alternative emails for mail clients that do not read HTML email - Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings -- SMTP authentication with LOGIN, PLAIN, NTLM and CRAM-MD5 mechanisms over SSL and TLS transports +- SMTP authentication with LOGIN, PLAIN, NTLM, CRAM-MD5 and Google's XOAUTH2 mechanisms over SSL and TLS transports - Error messages in 47 languages! - DKIM and S/MIME signing support - Compatible with PHP 5.0 and later @@ -33,24 +33,36 @@ The PHP mail() function usually sends via a local mail server, typically fronted ## License -This software is licenced under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html). Please read LICENSE for information on the +This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license. Please read LICENSE for information on the software availability and distribution. ## Installation & loading -PHPMailer is available via [Composer/Packagist](https://packagist.org/packages/phpmailer/phpmailer), so just add this line to your `composer.json` file: +PHPMailer is available via [Composer/Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), so just add this line to your `composer.json` file: - "phpmailer/phpmailer": "~5.2" +```json +"phpmailer/phpmailer": "~5.2" +``` + +or + +```sh +composer require phpmailer/phpmailer +``` -Alternatively, copy the contents of the PHPMailer folder into somewhere that's in your PHP `include_path` setting. If you don't speak git or just want a tarball, click the 'zip' button at the top of the page in GitHub. +If you want to use the Gmail XOAUTH2 authentication class, you will also need to add a dependency on the `league/oauth2-client` package. + +Alternatively, copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration.. If you don't speak git or just want a tarball, click the 'zip' button at the top of the page in GitHub. If you're not using composer's autoloader, PHPMailer provides an SPL-compatible autoloader, and that is the preferred way of loading the library - just `require '/path/to/PHPMailerAutoload.php';` and everything should work. The autoloader does not throw errors if it can't find classes so it prepends itself to the SPL list, allowing your own (or your framework's) autoloader to catch errors. SPL autoloading was introduced in PHP 5.1.0, so if you are using a version older than that you will need to require/include each class manually. PHPMailer does *not* declare a namespace because namespaces were only introduced in PHP 5.3. +If you want to use Google's XOAUTH2 authentication mechanism, you need to be running at least PHP 5.4, and load the dependencies listed in `composer.json`. + ### Minimal installation -While installing the entire package manually or with composer is simple, convenient and reliable, you may want to include only vital files in your project. At the very least you will need [class.phpmailer.php](class.phpmailer.php). If you're using SMTP, you'll need [class.smtp.php](class.smtp.php), and if you're using POP-before SMTP, you'll need [class.pop3.php](class.pop3.php). For all of these, we recommend you use [the autoloader](PHPMailerAutoload.php) too as otherwise you will either have to `require` all classes manually or use some other autoloader. You can skip the [language](language/) folder if you're not showing errors to users and can make do with English-only errors. You may need the additional classes in the [extras](extras/) folder if you are using those features, including NTLM authentication and ics generation. +While installing the entire package manually or with composer is simple, convenient and reliable, you may want to include only vital files in your project. At the very least you will need [class.phpmailer.php](class.phpmailer.php). If you're using SMTP, you'll need [class.smtp.php](class.smtp.php), and if you're using POP-before SMTP, you'll need [class.pop3.php](class.pop3.php). For all of these, we recommend you use [the autoloader](PHPMailerAutoload.php) too as otherwise you will either have to `require` all classes manually or use some other autoloader. You can skip the [language](language/) folder if you're not showing errors to users and can make do with English-only errors. You may need the additional classes in the [extras](extras/) folder if you are using those features, including NTLM authentication and ics generation. If you're using Google XOAUTH2 you will need `class.phpmaileroauth.php` and `class.oauth.php` classes too, as well as the composer dependencies. ## A Simple Example @@ -70,8 +82,7 @@ $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to -$mail->From = 'from@example.com'; -$mail->FromName = 'Mailer'; +$mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient $mail->addAddress('ellen@example.com'); // Name is optional $mail->addReplyTo('info@example.com', 'Information'); @@ -136,7 +147,9 @@ We're particularly interested in fixing edge-cases, expanding test coverage and With the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone: -`git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git` +```sh +git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git +``` Please *don't* use the SourceForge or Google Code projects any more. diff --git a/MultiMailer/PHPMailer/VERSION b/MultiMailer/PHPMailer/VERSION new file mode 100644 index 0000000..ba678f2 --- /dev/null +++ b/MultiMailer/PHPMailer/VERSION @@ -0,0 +1 @@ +5.2.14 \ No newline at end of file diff --git a/MultiMailer/PHPMailer-5.2.10/changelog.md b/MultiMailer/PHPMailer/changelog.md similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/changelog.md rename to MultiMailer/PHPMailer/changelog.md index 3f8e44d..486f328 100644 --- a/MultiMailer/PHPMailer-5.2.10/changelog.md +++ b/MultiMailer/PHPMailer/changelog.md @@ -1,5 +1,30 @@ # ChangeLog +## Version 5.2.14 (Nov 1st 2015) +* Allow addresses with IDN (Internationalized Domain Name) in PHP 5.3+, thanks to @fbonzon +* Allow access to POP3 errors +* Make all POP3 private properties and methods protected +* **SECURITY** Fix vulnerability that allowed email addresses with line breaks (valid in RFC5322) to pass to SMTP, permitting message injection at the SMTP level. Mitigated in both the address validator and in the lower-level SMTP class. Thanks to Takeshi Terada. +* Updated Brazilian Portuguese translations (Thanks to @phelipealves) + +## Version 5.2.13 (Sep 14th 2015) +* Rename internal oauth class to avoid name clashes +* Improve Estonian translations + +## Version 5.2.12 (Sep 1st 2015) +* Fix incorrect composer package dependencies +* Skip existing embedded image `cid`s in `msgHTML` + +## Version 5.2.11 (Aug 31st 2015) +* Don't switch to quoted-printable for long lines if already using base64 +* Fixed Travis-CI config when run on PHP 7 +* Added Google XOAUTH2 authentication mechanism, thanks to @sherryl4george +* Add address parser for RFC822-format addresses +* Update MS Office MIME types +* Don't convert line breaks when using quoted-printable encoding +* Handle MS Exchange returning an invalid empty AUTH-type list in EHLO +* Don't set name or filename properties on MIME parts that don't have one + ## Version 5.2.10 (May 4th 2015) * Add custom header getter * Use `application/javascript` for .js attachments diff --git a/MultiMailer/PHPMailer-5.2.10/class.phpmailer.php b/MultiMailer/PHPMailer/class.phpmailer.php similarity index 86% rename from MultiMailer/PHPMailer-5.2.10/class.phpmailer.php rename to MultiMailer/PHPMailer/class.phpmailer.php index f2e0d1b..2e284b2 100644 --- a/MultiMailer/PHPMailer-5.2.10/class.phpmailer.php +++ b/MultiMailer/PHPMailer/class.phpmailer.php @@ -29,65 +29,66 @@ class PHPMailer { /** * The PHPMailer Version number. - * @type string + * @var string */ - public $Version = '5.2.10'; + public $Version = '5.2.14'; /** * Email priority. - * Options: 1 = High, 3 = Normal, 5 = low. - * @type integer + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * @var integer */ - public $Priority = 3; + public $Priority = null; /** * The character set of the message. - * @type string + * @var string */ public $CharSet = 'iso-8859-1'; /** * The MIME Content-type of the message. - * @type string + * @var string */ public $ContentType = 'text/plain'; /** * The message encoding. * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". - * @type string + * @var string */ public $Encoding = '8bit'; /** * Holds the most recent mailer error message. - * @type string + * @var string */ public $ErrorInfo = ''; /** * The From email address for the message. - * @type string + * @var string */ public $From = 'root@localhost'; /** * The From name of the message. - * @type string + * @var string */ public $FromName = 'Root User'; /** * The Sender email (Return-Path) of the message. * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. - * @type string + * @var string */ public $Sender = ''; /** * The Return-Path of the message. * If empty, it will be set to either From or Sender. - * @type string + * @var string * @deprecated Email senders should never set a return-path header; * it's the receiver's job (RFC5321 section 4.4), so this no longer does anything. * @link https://tools.ietf.org/html/rfc5321#section-4.4 RFC5321 reference @@ -96,14 +97,14 @@ class PHPMailer /** * The Subject of the message. - * @type string + * @var string */ public $Subject = ''; /** * An HTML or plain text message body. * If HTML then call isHTML(true). - * @type string + * @var string */ public $Body = ''; @@ -112,7 +113,7 @@ class PHPMailer * This body can be read by mail clients that do not have HTML email * capability such as mutt & Eudora. * Clients that can read HTML will view the normal Body. - * @type string + * @var string */ public $AltBody = ''; @@ -122,27 +123,27 @@ class PHPMailer * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ * @link http://kigkonsult.se/iCalcreator/ - * @type string + * @var string */ public $Ical = ''; /** * The complete compiled MIME message body. * @access protected - * @type string + * @var string */ protected $MIMEBody = ''; /** * The complete compiled MIME message headers. - * @type string + * @var string * @access protected */ protected $MIMEHeader = ''; /** * Extra headers that createHeader() doesn't fold in. - * @type string + * @var string * @access protected */ protected $mailHeader = ''; @@ -150,64 +151,64 @@ class PHPMailer /** * Word-wrap the message body to this number of chars. * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. - * @type integer + * @var integer */ public $WordWrap = 0; /** * Which method to use to send mail. * Options: "mail", "sendmail", or "smtp". - * @type string + * @var string */ public $Mailer = 'mail'; /** * The path to the sendmail program. - * @type string + * @var string */ public $Sendmail = '/usr/sbin/sendmail'; /** * Whether mail() uses a fully sendmail-compatible MTA. * One which supports sendmail's "-oi -f" options. - * @type boolean + * @var boolean */ public $UseSendmailOptions = true; /** * Path to PHPMailer plugins. * Useful if the SMTP class is not in the PHP include path. - * @type string + * @var string * @deprecated Should not be needed now there is an autoloader. */ public $PluginDir = ''; /** - * The email address that a reading confirmation should be sent to. - * @type string + * The email address that a reading confirmation should be sent to, also known as read receipt. + * @var string */ public $ConfirmReadingTo = ''; /** - * The hostname to use in Message-Id and Received headers - * and as default HELO string. - * If empty, the value returned - * by SERVER_NAME is used or 'localhost.localdomain'. - * @type string + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * @var string */ public $Hostname = ''; /** - * An ID to be used in the Message-Id header. + * An ID to be used in the Message-ID header. * If empty, a unique id will be generated. - * @type string + * @var string */ public $MessageID = ''; /** * The message Date to be used in the Date header. * If empty, the current date will be added. - * @type string + * @var string */ public $MessageDate = ''; @@ -220,21 +221,22 @@ class PHPMailer * You can also specify encryption type, for example: * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). * Hosts will be tried in order. - * @type string + * @var string */ public $Host = 'localhost'; /** * The default SMTP server port. - * @type integer + * @var integer * @TODO Why is this needed when the SMTP class takes care of it? */ public $Port = 25; /** * The SMTP HELO of the message. - * Default is $Hostname. - * @type string + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * @var string * @see PHPMailer::$Hostname */ public $Helo = ''; @@ -242,7 +244,7 @@ class PHPMailer /** * What kind of encryption to use on the SMTP connection. * Options: '', 'ssl' or 'tls' - * @type string + * @var string */ public $SMTPSecure = ''; @@ -250,14 +252,14 @@ class PHPMailer * Whether to enable TLS encryption automatically if a server supports it, * even if `SMTPSecure` is not set to 'tls'. * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. - * @type boolean + * @var boolean */ public $SMTPAutoTLS = true; /** * Whether to use SMTP authentication. * Uses the Username and Password properties. - * @type boolean + * @var boolean * @see PHPMailer::$Username * @see PHPMailer::$Password */ @@ -265,47 +267,47 @@ class PHPMailer /** * Options array passed to stream_context_create when connecting via SMTP. - * @type array + * @var array */ public $SMTPOptions = array(); /** * SMTP username. - * @type string + * @var string */ public $Username = ''; /** * SMTP password. - * @type string + * @var string */ public $Password = ''; /** * SMTP auth type. * Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5 - * @type string + * @var string */ public $AuthType = ''; /** * SMTP realm. * Used for NTLM auth - * @type string + * @var string */ public $Realm = ''; /** * SMTP workstation. * Used for NTLM auth - * @type string + * @var string */ public $Workstation = ''; /** * The SMTP server timeout in seconds. * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 - * @type integer + * @var integer */ public $Timeout = 300; @@ -318,7 +320,7 @@ class PHPMailer * * `2` Data and commands * * `3` As 2 plus connection status * * `4` Low-level data output - * @type integer + * @var integer * @see SMTP::$do_debug */ public $SMTPDebug = 0; @@ -334,7 +336,7 @@ class PHPMailer * * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; * - * @type string|callable + * @var string|callable * @see SMTP::$Debugoutput */ public $Debugoutput = 'echo'; @@ -343,20 +345,20 @@ class PHPMailer * Whether to keep SMTP connection open after each message. * If this is set to true then to close the connection * requires an explicit call to smtpClose(). - * @type boolean + * @var boolean */ public $SMTPKeepAlive = false; /** * Whether to split multiple to addresses into multiple messages * or send them all in one message. - * @type boolean + * @var boolean */ public $SingleTo = false; /** * Storage for addresses when SingleTo is enabled. - * @type array + * @var array * @TODO This should really not be public */ public $SingleToArray = array(); @@ -364,15 +366,15 @@ class PHPMailer /** * Whether to generate VERP addresses on send. * Only applicable when sending via SMTP. - * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link https://en.wikipedia.org/wiki/Variable_envelope_return_path * @link http://www.postfix.org/VERP_README.html Postfix VERP info - * @type boolean + * @var boolean */ public $do_verp = false; /** * Whether to allow sending messages with an empty body. - * @type boolean + * @var boolean */ public $AllowEmpty = false; @@ -380,40 +382,40 @@ class PHPMailer * The default line ending. * @note The default remains "\n". We force CRLF where we know * it must be used via self::CRLF. - * @type string + * @var string */ public $LE = "\n"; /** * DKIM selector. - * @type string + * @var string */ public $DKIM_selector = ''; /** * DKIM Identity. * Usually the email address used as the source of the email - * @type string + * @var string */ public $DKIM_identity = ''; /** * DKIM passphrase. * Used if your key is encrypted. - * @type string + * @var string */ public $DKIM_passphrase = ''; /** * DKIM signing domain name. * @example 'example.com' - * @type string + * @var string */ public $DKIM_domain = ''; /** * DKIM private key file path. - * @type string + * @var string */ public $DKIM_private = ''; @@ -433,48 +435,48 @@ class PHPMailer * string $subject the subject * string $body the email body * string $from email address of sender - * @type string + * @var string */ public $action_function = ''; /** * What to put in the X-Mailer header. * Options: An empty string for PHPMailer default, whitespace for none, or a string to use - * @type string + * @var string */ public $XMailer = ''; /** * An instance of the SMTP sender class. - * @type SMTP + * @var SMTP * @access protected */ protected $smtp = null; /** - * The array of 'to' addresses. - * @type array + * The array of 'to' names and addresses. + * @var array * @access protected */ protected $to = array(); /** - * The array of 'cc' addresses. - * @type array + * The array of 'cc' names and addresses. + * @var array * @access protected */ protected $cc = array(); /** - * The array of 'bcc' addresses. - * @type array + * The array of 'bcc' names and addresses. + * @var array * @access protected */ protected $bcc = array(); /** * The array of reply-to names and addresses. - * @type array + * @var array * @access protected */ protected $ReplyTo = array(); @@ -482,77 +484,100 @@ class PHPMailer /** * An array of all kinds of addresses. * Includes all of $to, $cc, $bcc - * @type array + * @var array * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc */ protected $all_recipients = array(); + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + */ + protected $RecipientsQueue = array(); + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$ReplyTo + */ + protected $ReplyToQueue = array(); + /** * The array of attachments. - * @type array + * @var array * @access protected */ protected $attachment = array(); /** * The array of custom headers. - * @type array + * @var array * @access protected */ protected $CustomHeader = array(); /** * The most recent Message-ID (including angular brackets). - * @type string + * @var string * @access protected */ protected $lastMessageID = ''; /** * The message's MIME type. - * @type string + * @var string * @access protected */ protected $message_type = ''; /** * The array of MIME boundary strings. - * @type array + * @var array * @access protected */ protected $boundary = array(); /** * The array of available languages. - * @type array + * @var array * @access protected */ protected $language = array(); /** * The number of errors encountered. - * @type integer + * @var integer * @access protected */ protected $error_count = 0; /** * The S/MIME certificate file path. - * @type string + * @var string * @access protected */ protected $sign_cert_file = ''; /** * The S/MIME key file path. - * @type string + * @var string * @access protected */ protected $sign_key_file = ''; /** * The optional S/MIME extra certificates ("CA Chain") file path. - * @type string + * @var string * @access protected */ protected $sign_extracerts_file = ''; @@ -560,21 +585,21 @@ class PHPMailer /** * The S/MIME password for the key. * Used only if the key is encrypted. - * @type string + * @var string * @access protected */ protected $sign_key_pass = ''; /** * Whether to throw exceptions for errors. - * @type boolean + * @var boolean * @access protected */ protected $exceptions = false; /** * Unique ID used for message ID and boundaries. - * @type string + * @var string * @access protected */ protected $uniqueid = ''; @@ -601,7 +626,7 @@ class PHPMailer /** * The maximum line length allowed by RFC 2822 section 2.1.1 - * @type integer + * @var integer */ const MAX_LINE_LENGTH = 998; @@ -763,55 +788,101 @@ public function isQmail() /** * Add a "To" address. - * @param string $address + * @param string $address The email address to send to * @param string $name - * @return boolean true on success, false if address already used + * @return boolean true on success, false if address already used or invalid in some way */ public function addAddress($address, $name = '') { - return $this->addAnAddress('to', $address, $name); + return $this->addOrEnqueueAnAddress('to', $address, $name); } /** * Add a "CC" address. * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address + * @param string $address The email address to send to * @param string $name - * @return boolean true on success, false if address already used + * @return boolean true on success, false if address already used or invalid in some way */ public function addCC($address, $name = '') { - return $this->addAnAddress('cc', $address, $name); + return $this->addOrEnqueueAnAddress('cc', $address, $name); } /** * Add a "BCC" address. * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address + * @param string $address The email address to send to * @param string $name - * @return boolean true on success, false if address already used + * @return boolean true on success, false if address already used or invalid in some way */ public function addBCC($address, $name = '') { - return $this->addAnAddress('bcc', $address, $name); + return $this->addOrEnqueueAnAddress('bcc', $address, $name); } /** - * Add a "Reply-to" address. - * @param string $address + * Add a "Reply-To" address. + * @param string $address The email address to reply to * @param string $name - * @return boolean + * @return boolean true on success, false if address already used or invalid in some way */ public function addReplyTo($address, $name = '') { - return $this->addAnAddress('Reply-To', $address, $name); + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); } /** - * Add an address to one of the recipient arrays. - * Addresses that have been added already return false, but do not throw exceptions - * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo' - * @param string $address The email address to send to + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (($pos = strrpos($address, '@')) === false) { + // At-sign is misssing. + $error_message = $this->lang('invalid_address') . $address; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $params = array($kind, $address, $name); + // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) { + if ($kind != 'Reply-To') { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + return true; + } + } else { + if (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + return true; + } + } + return false; + } + // Immediately add standard addresses without IDN. + return call_user_func_array(array($this, 'addAnAddress'), $params); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to * @param string $name * @throws phpmailerException * @return boolean true on success, false if address already used or invalid in some way @@ -819,26 +890,26 @@ public function addReplyTo($address, $name = '') */ protected function addAnAddress($kind, $address, $name = '') { - if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) { - $this->setError($this->lang('Invalid recipient array') . ': ' . $kind); - $this->edebug($this->lang('Invalid recipient array') . ': ' . $kind); + if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) { + $error_message = $this->lang('Invalid recipient kind: ') . $kind; + $this->setError($error_message); + $this->edebug($error_message); if ($this->exceptions) { - throw new phpmailerException('Invalid recipient array: ' . $kind); + throw new phpmailerException($error_message); } return false; } - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim if (!$this->validateAddress($address)) { - $this->setError($this->lang('invalid_address') . ': ' . $address); - $this->edebug($this->lang('invalid_address') . ': ' . $address); + $error_message = $this->lang('invalid_address') . $address; + $this->setError($error_message); + $this->edebug($error_message); if ($this->exceptions) { - throw new phpmailerException($this->lang('invalid_address') . ': ' . $address); + throw new phpmailerException($error_message); } return false; } if ($kind != 'Reply-To') { - if (!isset($this->all_recipients[strtolower($address)])) { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { array_push($this->$kind, array($address, $name)); $this->all_recipients[strtolower($address)] = true; return true; @@ -852,6 +923,61 @@ protected function addAnAddress($kind, $address, $name = '') return false; } + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
" into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * @return array + * @link http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + */ + public function parseAddresses($addrstr, $useimap = true) + { + $addresses = array(); + if ($useimap and function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + foreach ($list as $address) { + if ($address->host != '.SYNTAX-ERROR.') { + if ($this->validateAddress($address->mailbox . '@' . $address->host)) { + $addresses[] = array( + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host + ); + } + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if ($this->validateAddress($address)) { + $addresses[] = array( + 'name' => '', + 'address' => $address + ); + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + if ($this->validateAddress($email)) { + $addresses[] = array( + 'name' => trim(str_replace(array('"', "'"), '', $name)), + 'address' => $email + ); + } + } + } + } + return $addresses; + } + /** * Set the From and FromName properties. * @param string $address @@ -864,11 +990,15 @@ public function setFrom($address, $name = '', $auto = true) { $address = trim($address); $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - if (!$this->validateAddress($address)) { - $this->setError($this->lang('invalid_address') . ': ' . $address); - $this->edebug($this->lang('invalid_address') . ': ' . $address); + // Don't validate now addresses with IDN. Will be done in send(). + if (($pos = strrpos($address, '@')) === false or + (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and + !$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . $address; + $this->setError($error_message); + $this->edebug($error_message); if ($this->exceptions) { - throw new phpmailerException($this->lang('invalid_address') . ': ' . $address); + throw new phpmailerException($error_message); } return false; } @@ -898,10 +1028,10 @@ public function getLastMessageID() * Check that a string looks like an email address. * @param string $address The email address to check * @param string $patternselect A selector for the validation pattern to use : - * * `auto` Pick strictest one automatically; + * * `auto` Pick best pattern automatically; * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14; * * `pcre` Use old PCRE implementation; - * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; same as pcre8 but does not allow 'dotless' domains; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. * * `noregex` Don't use a regex: super fast, really dumb. * @return boolean @@ -910,6 +1040,10 @@ public function getLastMessageID() */ public static function validateAddress($address, $patternselect = 'auto') { + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { + return false; + } if (!$patternselect or $patternselect == 'auto') { //Check this constant first so it works when extension_loaded() is disabled by safe mode //Constant was added in PHP 5.2.4 @@ -989,6 +1123,48 @@ public static function validateAddress($address, $patternselect = 'auto') } } + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * "intl" and "mbstring" PHP extensions. + * @return bool "true" if required functions for IDN support are present + */ + public function idnSupported() + { + // @TODO: Write our own "idn_to_ascii" function for PHP <= 5.2. + return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain has characters not allowed in an IDN) + * @see PHPMailer::$CharSet + * @param string $address The email address to convert + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + // Verify we have required functions, CharSet, and at-sign. + if ($this->idnSupported() and + !empty($this->CharSet) and + ($pos = strrpos($address, '@')) !== false) { + $domain = substr($address, ++$pos); + // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) { + $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ? + idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) : + idn_to_ascii($domain)) !== false) { + return substr($address, 0, $pos) . $punycode; + } + } + } + return $address; + } + /** * Create a message and send it. * Uses the sending method specified by $Mailer. @@ -1020,17 +1196,41 @@ public function send() public function preSend() { try { + $this->error_count = 0; // Reset errors $this->mailHeader = ''; + + // Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array(array($this, 'addAnAddress'), $params); + } if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL); } + // Validate From, Sender, and ConfirmReadingTo addresses + foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) { + $this->$address_kind = trim($this->$address_kind); + if (empty($this->$address_kind)) { + continue; + } + $this->$address_kind = $this->punyencodeAddress($this->$address_kind); + if (!$this->validateAddress($this->$address_kind)) { + $error_message = $this->lang('invalid_address') . $this->$address_kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + } + // Set whether the message is multipart/alternative if (!empty($this->AltBody)) { $this->ContentType = 'multipart/alternative'; } - $this->error_count = 0; // Reset errors $this->setMessageType(); // Refuse to send an empty message unless we are specifically allowing it if (!$this->AllowEmpty and empty($this->Body)) { @@ -1171,7 +1371,15 @@ protected function sendmailSend($header, $body) fputs($mail, $header); fputs($mail, $body); $result = pclose($mail); - $this->doCallback(($result == 0), $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From); + $this->doCallback( + ($result == 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); if ($result != 0) { throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } @@ -1457,7 +1665,7 @@ public function setLanguage($langcode = 'en', $lang_path = '') 'file_open' => 'File Error: Could not open file: ', 'from_failed' => 'The following From address failed: ', 'instantiate' => 'Could not instantiate mail function.', - 'invalid_address' => 'Invalid address', + 'invalid_address' => 'Invalid address: ', 'mailer_not_supported' => ' mailer is not supported.', 'provide_address' => 'You must provide at least one recipient email address.', 'recipients_failed' => 'SMTP Error: The following recipients failed: ', @@ -1722,7 +1930,6 @@ public function createHeader() } $result .= $this->headerLine('Date', $this->MessageDate); - // To be created automatically by mail() if ($this->SingleTo) { if ($this->Mailer != 'mail') { @@ -1768,14 +1975,16 @@ public function createHeader() if ($this->MessageID != '') { $this->lastMessageID = $this->MessageID; } else { - $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->ServerHostname()); + $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname()); } $result .= $this->headerLine('Message-ID', $this->lastMessageID); - $result .= $this->headerLine('X-Priority', $this->Priority); + if (!is_null($this->Priority)) { + $result .= $this->headerLine('X-Priority', $this->Priority); + } if ($this->XMailer == '') { $result .= $this->headerLine( 'X-Mailer', - 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer/)' + 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer)' ); } else { $myXmailer = trim($this->XMailer); @@ -1785,7 +1994,7 @@ public function createHeader() } if ($this->ConfirmReadingTo != '') { - $result .= $this->headerLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>'); + $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); } // Add custom headers @@ -1897,8 +2106,9 @@ public function createBody() $bodyEncoding = '7bit'; $bodyCharSet = 'us-ascii'; } - //If lines are too long, change to quoted-printable transfer encoding - if (self::hasLineLongerThanMax($this->Body)) { + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding + if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) { $this->Encoding = 'quoted-printable'; $bodyEncoding = 'quoted-printable'; } @@ -1910,8 +2120,9 @@ public function createBody() $altBodyEncoding = '7bit'; $altBodyCharSet = 'us-ascii'; } - //If lines are too long, change to quoted-printable transfer encoding - if (self::hasLineLongerThanMax($this->AltBody)) { + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding + if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) { $altBodyEncoding = 'quoted-printable'; } //Use this as a preamble in all multipart message types @@ -2265,18 +2476,27 @@ protected function attachAll($disposition_type, $boundary) $type = $attachment[4]; $disposition = $attachment[6]; $cid = $attachment[7]; - if ($disposition == 'inline' && isset($cidUniq[$cid])) { + if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) { continue; } $cidUniq[$cid] = true; $mime[] = sprintf('--%s%s', $boundary, $this->LE); - $mime[] = sprintf( - 'Content-Type: %s; name="%s"%s', - $type, - $this->encodeHeader($this->secureHeader($name)), - $this->LE - ); + //Only include a filename property if we have one + if (!empty($name)) { + $mime[] = sprintf( + 'Content-Type: %s; name="%s"%s', + $type, + $this->encodeHeader($this->secureHeader($name)), + $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Type: %s%s', + $type, + $this->LE + ); + } // RFC1341 part 5 says 7bit is assumed if not specified if ($encoding != '7bit') { $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE); @@ -2300,12 +2520,20 @@ protected function attachAll($disposition_type, $boundary) $this->LE . $this->LE ); } else { - $mime[] = sprintf( - 'Content-Disposition: %s; filename=%s%s', - $disposition, - $encoded_name, - $this->LE . $this->LE - ); + if (!empty($encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename=%s%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Disposition: %s%s', + $disposition, + $this->LE . $this->LE + ); + } } } else { $mime[] = $this->LE; @@ -2339,7 +2567,6 @@ protected function attachAll($disposition_type, $boundary) * @param string $path The full path to the file * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' * @throws phpmailerException - * @see EncodeFile(encodeFile * @access protected * @return string */ @@ -2559,7 +2786,7 @@ public function encodeQP($string, $line_max = 76) { // Use native function if it's available (>= PHP5.3) if (function_exists('quoted_printable_encode')) { - return $this->fixEOL(quoted_printable_encode($string)); + return quoted_printable_encode($string); } // Fall back to a pure PHP implementation $string = str_replace( @@ -2567,8 +2794,7 @@ public function encodeQP($string, $line_max = 76) array(' ', "\r\n=2E", "\r\n", '='), rawurlencode($string) ); - $string = preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string); - return $this->fixEOL($string); + return preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string); } /** @@ -2637,7 +2863,6 @@ public function encodeQ($str, $position = 'text') return str_replace(' ', '_', $encoded); } - /** * Add a string or binary attachment (non-filesystem). * This method can be used to attach ascii or binary data, @@ -2743,7 +2968,7 @@ public function addStringEmbeddedImage( $disposition = 'inline' ) { // If a MIME type is not specified, try to work it out from the name - if ($type == '') { + if ($type == '' and !empty($name)) { $type = self::filenameToType($name); } @@ -2799,6 +3024,22 @@ public function alternativeExists() return !empty($this->AltBody); } + /** + * Clear queued addresses of given kind. + * @access protected + * @param string $kind 'to', 'cc', or 'bcc' + * @return void + */ + public function clearQueuedAddresses($kind) + { + $RecipientsQueue = $this->RecipientsQueue; + foreach ($RecipientsQueue as $address => $params) { + if ($params[0] == $kind) { + unset($this->RecipientsQueue[$address]); + } + } + } + /** * Clear all To recipients. * @return void @@ -2809,6 +3050,7 @@ public function clearAddresses() unset($this->all_recipients[strtolower($to[0])]); } $this->to = array(); + $this->clearQueuedAddresses('to'); } /** @@ -2821,6 +3063,7 @@ public function clearCCs() unset($this->all_recipients[strtolower($cc[0])]); } $this->cc = array(); + $this->clearQueuedAddresses('cc'); } /** @@ -2833,6 +3076,7 @@ public function clearBCCs() unset($this->all_recipients[strtolower($bcc[0])]); } $this->bcc = array(); + $this->clearQueuedAddresses('bcc'); } /** @@ -2842,6 +3086,7 @@ public function clearBCCs() public function clearReplyTos() { $this->ReplyTo = array(); + $this->ReplyToQueue = array(); } /** @@ -2854,6 +3099,7 @@ public function clearAllRecipients() $this->cc = array(); $this->bcc = array(); $this->all_recipients = array(); + $this->RecipientsQueue = array(); } /** @@ -3010,8 +3256,7 @@ public function addCustomHeader($name, $value = null) } /** - * Returns all custom headers - * + * Returns all custom headers. * @return array */ public function getCustomHeaders() @@ -3028,13 +3273,13 @@ public function getCustomHeaders() * @param string $message HTML message string * @param string $basedir baseline directory for path * @param boolean|callable $advanced Whether to use the internal HTML to text converter - * or your own custom converter @see html2text() + * or your own custom converter @see PHPMailer::html2text() * @return string $message */ public function msgHTML($message, $basedir = '', $advanced = false) { preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); - if (isset($images[2])) { + if (array_key_exists(2, $images)) { foreach ($images[2] as $imgindex => $url) { // Convert data URIs into embedded images if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { @@ -3045,15 +3290,16 @@ public function msgHTML($message, $basedir = '', $advanced = false) $data = rawurldecode($data); } $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 - if ($this->addStringEmbeddedImage($data, $cid, '', 'base64', $match[1])) { + if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) { $message = str_replace( $images[0][$imgindex], $images[1][$imgindex] . '="cid:' . $cid . '"', $message ); } - } elseif (!preg_match('#^[A-z]+://#', $url)) { + } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[A-z]+://#', $url)) { // Do not change urls for absolute images (thanks to corvuscorax) + // Do not change urls that are already inline images $filename = basename($url); $directory = dirname($url); if ($directory == '.') { @@ -3143,6 +3389,16 @@ public static function _mime_types($ext = '') 'bin' => 'application/macbinary', 'doc' => 'application/msword', 'word' => 'application/msword', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 'class' => 'application/octet-stream', 'dll' => 'application/octet-stream', 'dms' => 'application/octet-stream', @@ -3347,7 +3603,6 @@ public static function normalizeBreaks($text, $breaktype = "\r\n") return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text); } - /** * Set the public and private key files and password for S/MIME signing. * @access public @@ -3516,7 +3771,10 @@ public function DKIM_Add($headers_line, $subject, $body) "\tbh=" . $DKIMb64 . ";\r\n" . "\tb="; $toSign = $this->DKIM_HeaderC( - $from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs + $from_header . "\r\n" . + $to_header . "\r\n" . + $subject_header . "\r\n" . + $dkimhdrs ); $signed = $this->DKIM_Sign($toSign); return $dkimhdrs . $signed . "\r\n"; @@ -3536,6 +3794,7 @@ public static function hasLineLongerThanMax($str) /** * Allows for public read access to 'to' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. * @access public * @return array */ @@ -3546,6 +3805,7 @@ public function getToAddresses() /** * Allows for public read access to 'cc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. * @access public * @return array */ @@ -3556,6 +3816,7 @@ public function getCcAddresses() /** * Allows for public read access to 'bcc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. * @access public * @return array */ @@ -3566,6 +3827,7 @@ public function getBccAddresses() /** * Allows for public read access to 'ReplyTo' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. * @access public * @return array */ @@ -3576,6 +3838,7 @@ public function getReplyToAddresses() /** * Allows for public read access to 'all_recipients' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. * @access public * @return array */ diff --git a/MultiMailer/PHPMailer/class.phpmaileroauth.php b/MultiMailer/PHPMailer/class.phpmaileroauth.php new file mode 100644 index 0000000..f9cd7b4 --- /dev/null +++ b/MultiMailer/PHPMailer/class.phpmaileroauth.php @@ -0,0 +1,196 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailerOAuth - PHPMailer subclass adding OAuth support. + * @package PHPMailer + * @author @sherryl4george + * @author Marcus Bointon (@Synchro) + */ +class PHPMailerOAuth extends PHPMailer +{ + /** + * The OAuth user's email address + * @var string + */ + public $oauthUserEmail = ''; + + /** + * The OAuth refresh token + * @var string + */ + public $oauthRefreshToken = ''; + + /** + * The OAuth client ID + * @var string + */ + public $oauthClientId = ''; + + /** + * The OAuth client secret + * @var string + */ + public $oauthClientSecret = ''; + + /** + * An instance of the PHPMailerOAuthGoogle class. + * @var PHPMailerOAuthGoogle + * @access protected + */ + protected $oauth = null; + + /** + * Get a PHPMailerOAuthGoogle instance to use. + * @return PHPMailerOAuthGoogle + */ + public function getOAUTHInstance() + { + if (!is_object($this->oauth)) { + $this->oauth = new PHPMailerOAuthGoogle( + $this->oauthUserEmail, + $this->oauthClientSecret, + $this->oauthClientId, + $this->oauthRefreshToken + ); + } + return $this->oauth; + } + + /** + * Initiate a connection to an SMTP server. + * Overrides the original smtpConnect method to add support for OAuth. + * @param array $options An array of options compatible with stream_context_create() + * @uses SMTP + * @access public + * @return bool + */ + public function smtpConnect($options = array()) + { + if (is_null($this->smtp)) { + $this->smtp = $this->getSMTPInstance(); + } + + if (is_null($this->oauth)) { + $this->oauth = $this->getOAUTHInstance(); + } + + // Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = array(); + if (!preg_match('/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/', trim($hostentry), $hostinfo)) { + // Not a valid host entry + continue; + } + // $hostinfo[2]: optional ssl or tls prefix + // $hostinfo[3]: the hostname + // $hostinfo[4]: optional port number + // The host string prefix can temporarily override the current setting for SMTPSecure + // If it's not specified, the default value is used + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = ($this->SMTPSecure == 'tls'); + if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; // Can't have SSL and TLS at the same time + $secure = 'ssl'; + } elseif ($hostinfo[2] == 'tls') { + $tls = true; + // tls doesn't use a prefix + $secure = 'tls'; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA1'); + if ('tls' === $secure or 'ssl' === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[3]; + $port = $this->Port; + $tport = (integer)$hostinfo[4]; + if ($tport > 0 and $tport < 65536) { + $port = $tport; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + // * it's not disabled + // * we have openssl extension + // * we are not already using SSL + // * the server offers STARTTLS + if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new phpmailerException($this->lang('connect_host')); + } + // We must resend HELO after tls negotiation + $this->smtp->hello($hello); + } + if ($this->SMTPAuth) { + if (!$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->Realm, + $this->Workstation, + $this->oauth + ) + ) { + throw new phpmailerException($this->lang('authenticate')); + } + } + return true; + } catch (phpmailerException $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + // We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + // If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + // As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions and !is_null($lastexception)) { + throw $lastexception; + } + return false; + } +} diff --git a/MultiMailer/PHPMailer/class.phpmaileroauthgoogle.php b/MultiMailer/PHPMailer/class.phpmaileroauthgoogle.php new file mode 100644 index 0000000..71c9bd3 --- /dev/null +++ b/MultiMailer/PHPMailer/class.phpmaileroauthgoogle.php @@ -0,0 +1,77 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider. + * @package PHPMailer + * @author @sherryl4george + * @author Marcus Bointon (@Synchro) + * @link https://github.com/thephpleague/oauth2-client + */ +class PHPMailerOAuthGoogle +{ + private $oauthUserEmail = ''; + private $oauthRefreshToken = ''; + private $oauthClientId = ''; + private $oauthClientSecret = ''; + + /** + * @param string $UserEmail + * @param string $ClientSecret + * @param string $ClientId + * @param string $RefreshToken + */ + public function __construct( + $UserEmail, + $ClientSecret, + $ClientId, + $RefreshToken + ) { + $this->oauthClientId = $ClientId; + $this->oauthClientSecret = $ClientSecret; + $this->oauthRefreshToken = $RefreshToken; + $this->oauthUserEmail = $UserEmail; + } + + private function getProvider() + { + return new League\OAuth2\Client\Provider\Google([ + 'clientId' => $this->oauthClientId, + 'clientSecret' => $this->oauthClientSecret + ]); + } + + private function getGrant() + { + return new \League\OAuth2\Client\Grant\RefreshToken(); + } + + private function getToken() + { + $provider = $this->getProvider(); + $grant = $this->getGrant(); + return $provider->getAccessToken($grant, ['refresh_token' => $this->oauthRefreshToken]); + } + + public function getOauth64() + { + $token = $this->getToken(); + return base64_encode("user=" . $this->oauthUserEmail . "\001auth=Bearer " . $token . "\001\001"); + } +} diff --git a/MultiMailer/PHPMailer-5.2.10/class.pop3.php b/MultiMailer/PHPMailer/class.pop3.php similarity index 91% rename from MultiMailer/PHPMailer-5.2.10/class.pop3.php rename to MultiMailer/PHPMailer/class.pop3.php index f63619c..403b573 100644 --- a/MultiMailer/PHPMailer-5.2.10/class.pop3.php +++ b/MultiMailer/PHPMailer/class.pop3.php @@ -31,28 +31,28 @@ class POP3 { /** * The POP3 PHPMailer Version number. - * @type string + * @var string * @access public */ - public $Version = '5.2.10'; + public $Version = '5.2.14'; /** * Default POP3 port number. - * @type integer + * @var integer * @access public */ public $POP3_PORT = 110; /** * Default timeout in seconds. - * @type integer + * @var integer * @access public */ public $POP3_TIMEOUT = 30; /** * POP3 Carriage Return + Line Feed. - * @type string + * @var string * @access public * @deprecated Use the constant instead */ @@ -61,66 +61,66 @@ class POP3 /** * Debug display level. * Options: 0 = no, 1+ = yes - * @type integer + * @var integer * @access public */ public $do_debug = 0; /** * POP3 mail server hostname. - * @type string + * @var string * @access public */ public $host; /** * POP3 port number. - * @type integer + * @var integer * @access public */ public $port; /** * POP3 Timeout Value in seconds. - * @type integer + * @var integer * @access public */ public $tval; /** * POP3 username - * @type string + * @var string * @access public */ public $username; /** * POP3 password. - * @type string + * @var string * @access public */ public $password; /** * Resource handle for the POP3 connection socket. - * @type resource - * @access private + * @var resource + * @access protected */ - private $pop_conn; + protected $pop_conn; /** * Are we connected? - * @type boolean - * @access private + * @var boolean + * @access protected */ - private $connected = false; + protected $connected = false; /** * Error container. - * @type array - * @access private + * @var array + * @access protected */ - private $errors = array(); + protected $errors = array(); /** * Line break constant @@ -310,9 +310,9 @@ public function disconnect() * $size is the maximum number of bytes to retrieve * @param integer $size * @return string - * @access private + * @access protected */ - private function getResponse($size = 128) + protected function getResponse($size = 128) { $response = fgets($this->pop_conn, $size); if ($this->do_debug >= 1) { @@ -325,9 +325,9 @@ private function getResponse($size = 128) * Send raw data to the POP3 server. * @param string $string * @return integer - * @access private + * @access protected */ - private function sendString($string) + protected function sendString($string) { if ($this->pop_conn) { if ($this->do_debug >= 2) { //Show client messages when debug >= 2 @@ -343,9 +343,9 @@ private function sendString($string) * Looks for for +OK or -ERR. * @param string $string * @return boolean - * @access private + * @access protected */ - private function checkResponse($string) + protected function checkResponse($string) { if (substr($string, 0, 3) !== '+OK') { $this->setError(array( @@ -363,8 +363,9 @@ private function checkResponse($string) * Add an error to the internal error store. * Also display debug output if it's enabled. * @param $error + * @access protected */ - private function setError($error) + protected function setError($error) { $this->errors[] = $error; if ($this->do_debug >= 1) { @@ -376,15 +377,24 @@ private function setError($error) } } + /** + * Get an array of error messages, if any. + * @return array + */ + public function getErrors() + { + return $this->errors; + } + /** * POP3 connection error handler. * @param integer $errno * @param string $errstr * @param string $errfile * @param integer $errline - * @access private + * @access protected */ - private function catchWarning($errno, $errstr, $errfile, $errline) + protected function catchWarning($errno, $errstr, $errfile, $errline) { $this->setError(array( 'error' => "Connecting to the POP3 server raised a PHP warning: ", diff --git a/MultiMailer/PHPMailer-5.2.10/class.smtp.php b/MultiMailer/PHPMailer/class.smtp.php similarity index 93% rename from MultiMailer/PHPMailer-5.2.10/class.smtp.php rename to MultiMailer/PHPMailer/class.smtp.php index b2dfdc1..2e32e2f 100644 --- a/MultiMailer/PHPMailer-5.2.10/class.smtp.php +++ b/MultiMailer/PHPMailer/class.smtp.php @@ -28,25 +28,25 @@ class SMTP { /** * The PHPMailer SMTP version number. - * @type string + * @var string */ - const VERSION = '5.2.10'; + const VERSION = '5.2.14'; /** * SMTP line break constant. - * @type string + * @var string */ const CRLF = "\r\n"; /** * The SMTP port to use if one is not specified. - * @type integer + * @var integer */ const DEFAULT_SMTP_PORT = 25; /** * The maximum line length allowed by RFC 2822 section 2.1.1 - * @type integer + * @var integer */ const MAX_LINE_LENGTH = 998; @@ -77,15 +77,15 @@ class SMTP /** * The PHPMailer SMTP Version number. - * @type string + * @var string * @deprecated Use the `VERSION` constant instead * @see SMTP::VERSION */ - public $Version = '5.2.10'; + public $Version = '5.2.14'; /** * SMTP server port number. - * @type integer + * @var integer * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead * @see SMTP::DEFAULT_SMTP_PORT */ @@ -93,7 +93,7 @@ class SMTP /** * SMTP reply line ending. - * @type string + * @var string * @deprecated Use the `CRLF` constant instead * @see SMTP::CRLF */ @@ -107,7 +107,7 @@ class SMTP * * self::DEBUG_SERVER (`2`) Client commands and server responses * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages - * @type integer + * @var integer */ public $do_debug = self::DEBUG_OFF; @@ -122,7 +122,7 @@ class SMTP * * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; * - * @type string|callable + * @var string|callable */ public $Debugoutput = 'echo'; @@ -130,7 +130,7 @@ class SMTP * Whether to use VERP. * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path * @link http://www.postfix.org/VERP_README.html Info on VERP - * @type boolean + * @var boolean */ public $do_verp = false; @@ -139,26 +139,26 @@ class SMTP * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2 - * @type integer + * @var integer */ public $Timeout = 300; /** * How long to wait for commands to complete, in seconds. * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 - * @type integer + * @var integer */ public $Timelimit = 300; /** * The socket for the server connection. - * @type resource + * @var resource */ protected $smtp_conn; /** * Error information, if any, for the last SMTP command. - * @type array + * @var array */ protected $error = array( 'error' => '', @@ -170,7 +170,7 @@ class SMTP /** * The reply the server sent to us for HELO. * If null, no HELO string has yet been received. - * @type string|null + * @var string|null */ protected $helo_rply = null; @@ -181,13 +181,13 @@ class SMTP * represents the server name. In case of HELO it is the only element of the array. * Other values can be boolean TRUE or an array containing extension options. * If null, no HELO/EHLO string has yet been received. - * @type array|null + * @var array|null */ protected $server_caps = null; /** * The most recent reply received from the server. - * @type string + * @var string */ protected $last_reply = ''; @@ -351,20 +351,21 @@ public function startTLS() * Perform SMTP authentication. * Must be run after hello(). * @see hello() - * @param string $username The user name - * @param string $password The password - * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5) - * @param string $realm The auth realm for NTLM + * @param string $username The user name + * @param string $password The password + * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2) + * @param string $realm The auth realm for NTLM * @param string $workstation The auth workstation for NTLM - * @access public - * @return boolean True if successfully authenticated. + * @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth) + * @return bool True if successfully authenticated.* @access public */ public function authenticate( $username, $password, $authtype = null, $realm = '', - $workstation = '' + $workstation = '', + $OAuth = null ) { if (!$this->server_caps) { $this->setError('Authentication is not allowed before HELO/EHLO'); @@ -388,7 +389,7 @@ public function authenticate( ); if (empty($authtype)) { - foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN') as $method) { + foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN', 'XOAUTH2') as $method) { if (in_array($method, $this->server_caps['AUTH'])) { $authtype = $method; break; @@ -436,6 +437,19 @@ public function authenticate( return false; } break; + case 'XOAUTH2': + //If the OAuth Instance is not set. Can be a case when PHPMailer is used + //instead of PHPMailerOAuth + if (is_null($OAuth)) { + return false; + } + $oauth = $OAuth->getOauth64(); + + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { + return false; + } + break; case 'NTLM': /* * ntlm_sasl_client.php @@ -723,9 +737,11 @@ protected function parseHelloFields($type) { $this->server_caps = array(); $lines = explode("\n", $this->last_reply); + foreach ($lines as $n => $s) { + //First 4 chars contain response code followed by - or space $s = trim(substr($s, 4)); - if (!$s) { + if (empty($s)) { continue; } $fields = explode(' ', $s); @@ -735,11 +751,20 @@ protected function parseHelloFields($type) $fields = $fields[0]; } else { $name = array_shift($fields); - if ($name == 'SIZE') { - $fields = ($fields) ? $fields[0] : 0; + switch ($name) { + case 'SIZE': + $fields = ($fields ? $fields[0] : 0); + break; + case 'AUTH': + if (!is_array($fields)) { + $fields = array(); + } + break; + default: + $fields = true; } } - $this->server_caps[$name] = ($fields ? $fields : true); + $this->server_caps[$name] = $fields; } } } @@ -789,15 +814,15 @@ public function quit($close_on_error = true) * Sets the TO argument to $toaddr. * Returns true if the recipient was accepted false if it was rejected. * Implements from rfc 821: RCPT TO: - * @param string $toaddr The address the message is being sent to + * @param string $address The address the message is being sent to * @access public * @return boolean */ - public function recipient($toaddr) + public function recipient($address) { return $this->sendCommand( 'RCPT TO', - 'RCPT TO:<' . $toaddr . '>', + 'RCPT TO:<' . $address . '>', array(250, 251) ); } @@ -816,9 +841,9 @@ public function reset() /** * Send a command to an SMTP server and check its return code. - * @param string $command The command name - not sent to the server + * @param string $command The command name - not sent to the server * @param string $commandstring The actual command to send - * @param integer|array $expect One or more expected integer success codes + * @param integer|array $expect One or more expected integer success codes * @access protected * @return boolean True on success. */ @@ -828,6 +853,11 @@ protected function sendCommand($command, $commandstring, $expect) $this->setError("Called $command without being connected"); return false; } + //Reject line breaks in all commands + if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { + $this->setError("Command '$command' contained line breaks"); + return false; + } $this->client_send($commandstring . self::CRLF); $this->last_reply = $this->get_lines(); @@ -1031,10 +1061,9 @@ protected function get_lines() } while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) { $str = @fgets($this->smtp_conn, 515); - $this->edebug("SMTP -> get_lines(): \$data was \"$data\"", self::DEBUG_LOWLEVEL); - $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL); - $data .= $str; $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL); + $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL); + $data .= $str; // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen if ((isset($str[3]) and $str[3] == ' ')) { break; diff --git a/MultiMailer/PHPMailer-5.2.10/composer.json b/MultiMailer/PHPMailer/composer.json similarity index 77% rename from MultiMailer/PHPMailer-5.2.10/composer.json rename to MultiMailer/PHPMailer/composer.json index 53d29e8..9521a12 100644 --- a/MultiMailer/PHPMailer-5.2.10/composer.json +++ b/MultiMailer/PHPMailer/composer.json @@ -24,11 +24,17 @@ }, "require-dev": { "phpdocumentor/phpdocumentor": "*", - "phpunit/phpunit": "4.3.*" + "phpunit/phpunit": "4.7.*" + }, + "suggest": { + "league/oauth2-client": "Needed for XOAUTH2 authentication", + "league/oauth2-google": "Needed for Gmail XOAUTH2" }, "autoload": { "classmap": [ "class.phpmailer.php", + "class.phpmaileroauth.php", + "class.phpmaileroauthgoogle.php", "class.smtp.php", "class.pop3.php", "extras/EasyPeasyICS.php", @@ -36,4 +42,4 @@ ] }, "license": "LGPL-2.1" -} \ No newline at end of file +} diff --git a/MultiMailer/PHPMailer/composer.lock b/MultiMailer/PHPMailer/composer.lock new file mode 100644 index 0000000..15a841d --- /dev/null +++ b/MultiMailer/PHPMailer/composer.lock @@ -0,0 +1,3458 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "0eb36ae77d61050323a94e312176ea66", + "packages": [], + "packages-dev": [ + { + "name": "cilex/cilex", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/Cilex.git", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", + "shasum": "" + }, + "require": { + "cilex/console-service-provider": "1.*", + "php": ">=5.3.3", + "pimple/pimple": "~1.0", + "symfony/finder": "~2.1", + "symfony/process": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "symfony/validator": "~2.1" + }, + "suggest": { + "monolog/monolog": ">=1.0.0", + "symfony/validator": ">=1.0.0", + "symfony/yaml": ">=1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", + "homepage": "http://cilex.github.com", + "keywords": [ + "cli", + "microframework" + ], + "time": "2014-03-29 14:03:13" + }, + { + "name": "cilex/console-service-provider", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/console-service-provider.git", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "pimple/pimple": "1.*@dev", + "symfony/console": "~2.1" + }, + "require-dev": { + "cilex/cilex": "1.*@dev", + "silex/silex": "1.*@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex\\Provider\\Console": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "Console Service Provider", + "keywords": [ + "cilex", + "console", + "pimple", + "service-provider", + "silex" + ], + "time": "2012-12-19 10:50:58" + }, + { + "name": "container-interop/container-interop", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e", + "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "time": "2014-12-30 15:22:37" + }, + { + "name": "doctrine/annotations", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-08-31 12:32:49" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09 13:34:57" + }, + { + "name": "erusev/parsedown", + "version": "1.5.4", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "0e89e3714bda18973184d30646306bb0a482bd96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/0e89e3714bda18973184d30646306bb0a482bd96", + "reference": "0e89e3714bda18973184d30646306bb0a482bd96", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2015-08-03 09:24:05" + }, + { + "name": "herrera-io/json", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-json.git", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "justinrainbow/json-schema": ">=1.0,<2.0-dev", + "php": ">=5.3.3", + "seld/jsonlint": ">=1.0,<2.0-dev" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/json_version.php" + ], + "psr-0": { + "Herrera\\Json": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io/", + "role": "Developer" + } + ], + "description": "A library for simplifying JSON linting and validation.", + "homepage": "http://herrera-io.github.com/php-json", + "keywords": [ + "json", + "lint", + "schema", + "validate" + ], + "time": "2013-10-30 16:51:34" + }, + { + "name": "herrera-io/phar-update", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-phar-update.git", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "shasum": "" + }, + "require": { + "herrera-io/json": "1.*", + "kherge/version": "1.*", + "php": ">=5.3.3" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/constants.php" + ], + "psr-0": { + "Herrera\\Phar\\Update": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io/", + "role": "Developer" + } + ], + "description": "A library for self-updating Phars.", + "homepage": "http://herrera-io.github.com/php-phar-update", + "keywords": [ + "phar", + "update" + ], + "time": "2013-10-30 17:23:01" + }, + { + "name": "jms/metadata", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "22b72455559a25777cfd28c4ffda81ff7639f353" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/22b72455559a25777cfd28c4ffda81ff7639f353", + "reference": "22b72455559a25777cfd28c4ffda81ff7639f353", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2014-07-12 07:13:19" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18 18:08:43" + }, + { + "name": "jms/serializer", + "version": "0.16.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/c8a171357ca92b6706e395c757f334902d430ea9", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "jms/metadata": "~1.1", + "jms/parser-lib": "1.*", + "php": ">=5.3.2", + "phpcollection/phpcollection": "~0.1" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "~1.0.1", + "jackalope/jackalope-doctrine-dbal": "1.0.*", + "propel/propel1": "~1.7", + "symfony/filesystem": "2.*", + "symfony/form": "~2.1", + "symfony/translation": "~2.0", + "symfony/validator": "~2.0", + "symfony/yaml": "2.*", + "twig/twig": ">=1.8,<2.0-dev" + }, + "suggest": { + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.15-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2014-03-18 08:39:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce", + "reference": "8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.1.0", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "~3.7" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "JsonSchema": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2015-07-14 16:29:50" + }, + { + "name": "kherge/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/Version.git", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "KevinGH\\Version": "src/lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "me@kevingh.com", + "homepage": "http://www.kevingh.com/" + } + ], + "description": "A parsing and comparison library for semantic versioning.", + "homepage": "http://github.com/kherge/Version", + "time": "2012-08-16 17:13:03" + }, + { + "name": "monolog/monolog", + "version": "1.17.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0524c87587ab85bc4c2d6f5b41253ccb930a5422", + "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "raven/raven": "~0.11", + "ruflin/elastica": ">=0.90 <3.0", + "swiftmailer/swiftmailer": "~5.3", + "videlalvaro/php-amqplib": "~2.4" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "raven/raven": "Allow sending log messages to a Sentry server", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.16.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2015-08-31 09:17:37" + }, + { + "name": "nikic/php-parser", + "version": "v0.9.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ef70767475434bdb3615b43c327e2cae17ef12eb", + "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9-dev" + } + }, + "autoload": { + "psr-0": { + "PHPParser": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2014-07-23 18:24:17" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "b8bf55a0a929ca43b01232b36719f176f86c7e83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/b8bf55a0a929ca43b01232b36719f176f86c7e83", + "reference": "b8bf55a0a929ca43b01232b36719f176f86c7e83", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2014-03-11 13:46:42" + }, + { + "name": "phpdocumentor/fileset", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Fileset.git", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/finder": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Fileset component for collecting a set of files given directories and file paths", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "files", + "fileset", + "phpdoc" + ], + "time": "2013-08-06 21:07:42" + }, + { + "name": "phpdocumentor/graphviz", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/GraphViz.git", + "reference": "aa243118c8a055fc853c02802e8503c5435862f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/GraphViz/zipball/aa243118c8a055fc853c02802e8503c5435862f7", + "reference": "aa243118c8a055fc853c02802e8503c5435862f7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2014-07-19 06:52:59" + }, + { + "name": "phpdocumentor/phpdocumentor", + "version": "v2.8.5", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/phpDocumentor2.git", + "reference": "adfb4affa80e8cc0134616f2d2d264dd25c243eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/phpDocumentor2/zipball/adfb4affa80e8cc0134616f2d2d264dd25c243eb", + "reference": "adfb4affa80e8cc0134616f2d2d264dd25c243eb", + "shasum": "" + }, + "require": { + "cilex/cilex": "~1.0", + "erusev/parsedown": "~1.0", + "herrera-io/phar-update": "1.0.3", + "jms/serializer": "~0.12", + "monolog/monolog": "~1.6", + "php": ">=5.3.3", + "phpdocumentor/fileset": "~1.0", + "phpdocumentor/graphviz": "~1.0", + "phpdocumentor/reflection": "~1.0", + "phpdocumentor/reflection-docblock": "~2.0", + "symfony/config": "~2.3", + "symfony/console": "~2.3", + "symfony/event-dispatcher": "~2.1", + "symfony/process": "~2.0", + "symfony/stopwatch": "~2.3", + "symfony/validator": "~2.2", + "twig/twig": "~1.3", + "zendframework/zend-cache": "~2.1", + "zendframework/zend-config": "~2.1", + "zendframework/zend-filter": "~2.1", + "zendframework/zend-i18n": "~2.1", + "zendframework/zend-serializer": "~2.1", + "zendframework/zend-servicemanager": "~2.1", + "zendframework/zend-stdlib": "~2.1", + "zetacomponents/document": ">=1.3.1" + }, + "require-dev": { + "behat/behat": "~3.0", + "mikey179/vfsstream": "~1.2", + "mockery/mockery": "~0.9@dev", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.4", + "symfony/expression-language": "~2.4" + }, + "suggest": { + "ext-twig": "Enabling the twig extension improves the generation of twig based templates.", + "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." + }, + "bin": [ + "bin/phpdoc.php", + "bin/phpdoc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.9-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ], + "Cilex\\Provider": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Documentation Generator for PHP", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "api", + "application", + "dga", + "documentation", + "phpdoc" + ], + "time": "2015-07-28 06:36:40" + }, + { + "name": "phpdocumentor/reflection", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Reflection.git", + "reference": "fc40c3f604ac2287eb5c314174d5109b2c699372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/fc40c3f604ac2287eb5c314174d5109b2c699372", + "reference": "fc40c3f604ac2287eb5c314174d5109b2c699372", + "shasum": "" + }, + "require": { + "nikic/php-parser": "~0.9.4", + "php": ">=5.3.3", + "phpdocumentor/reflection-docblock": "~2.0", + "psr/log": "~1.0" + }, + "require-dev": { + "behat/behat": "~2.4", + "mockery/mockery": "~0.8", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/", + "tests/mocks/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Reflection library to do Static Analysis for PHP Projects", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2014-11-14 11:43:04" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03 12:10:50" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25 16:39:46" + }, + { + "name": "phpspec/prophecy", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2015-08-13 10:07:40" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2d7c03c0e4e080901b8f33b2897b0577be18a13c", + "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-08-04 03:42:39" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2015-06-21 13:08:43" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2015-06-21 08:01:12" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b", + "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-08-16 08:51:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.7.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9b97f9d807b862c2de2a36e86690000801c85724" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b97f9d807b862c2de2a36e86690000801c85724", + "reference": "9b97f9d807b862c2de2a36e86690000801c85724", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "~1.3,>=1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": ">=1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.2", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-07-13 11:28:34" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "5e2645ad49d196e020b85598d7c97e482725786a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5e2645ad49d196e020b85598d7c97e482725786a", + "reference": "5e2645ad49d196e020b85598d7c97e482725786a", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-08-19 09:14:08" + }, + { + "name": "pimple/pimple", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "homepage": "http://pimple.sensiolabs.org", + "keywords": [ + "container", + "dependency injection" + ], + "time": "2013-11-22 08:30:29" + }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" + }, + { + "name": "sebastian/comparator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", + "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-07-26 15:48:44" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44", + "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2015-08-03 06:14:51" + }, + { + "name": "sebastian/exporter", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", + "reference": "7ae5513327cb536431847bcc0c10edba2701064e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-06-21 07:55:53" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba", + "reference": "994d4a811bafe801fb06dccbee797863ba2792ba", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-06-21 08:04:50" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21 13:59:46" + }, + { + "name": "seld/jsonlint", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2015-01-04 21:18:15" + }, + { + "name": "symfony/config", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Config.git", + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Config/zipball/6c905bbed1e728226de656e4c07d620dfe9e80d9", + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/console", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Console.git", + "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e", + "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.1" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2015-07-28 15:18:12" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", + "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5", + "symfony/dependency-injection": "~2.6", + "symfony/expression-language": "~2.6", + "symfony/phpunit-bridge": "~2.7", + "symfony/stopwatch": "~2.3" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2015-06-18 19:21:56" + }, + { + "name": "symfony/filesystem", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Filesystem.git", + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/finder", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Finder.git", + "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Finder/zipball/ae0f363277485094edc04c9f3cbe595b183b78e4", + "reference": "ae0f363277485094edc04c9f3cbe595b183b78e4", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/process", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Process.git", + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3", + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2015-07-01 11:25:50" + }, + { + "name": "symfony/stopwatch", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Stopwatch.git", + "reference": "b07a866719bbac5294c67773340f97b871733310" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/b07a866719bbac5294c67773340f97b871733310", + "reference": "b07a866719bbac5294c67773340f97b871733310", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2015-07-01 18:23:16" + }, + { + "name": "symfony/translation", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "c8dc34cc936152c609cdd722af317e4239d10dd6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/c8dc34cc936152c609cdd722af317e4239d10dd6", + "reference": "c8dc34cc936152c609cdd722af317e4239d10dd6", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/intl": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.2" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/validator", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Validator.git", + "reference": "646df03e635a8a232804274401449ccdf5f03cad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Validator/zipball/646df03e635a8a232804274401449ccdf5f03cad", + "reference": "646df03e635a8a232804274401449ccdf5f03cad", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/translation": "~2.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "~1.2,>=1.2.1", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.1", + "symfony/intl": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/property-access": "~2.3", + "symfony/yaml": "~2.0,>=2.0.5" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Validator Component", + "homepage": "https://symfony.com", + "time": "2015-07-31 06:49:15" + }, + { + "name": "symfony/yaml", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "71340e996171474a53f3d29111d046be4ad8a0ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff", + "reference": "71340e996171474a53f3d29111d046be4ad8a0ff", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2015-07-28 14:07:07" + }, + { + "name": "twig/twig", + "version": "v1.21.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ca8d3aa90b6a01c82e07909fe815d6b443e75a23", + "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.21-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2015-08-26 08:58:31" + }, + { + "name": "zendframework/zend-cache", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-cache.git", + "reference": "325afc68d4381cf8b95288ebb9b1d38dc32ed579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/325afc68d4381cf8b95288ebb9b1d38dc32ed579", + "reference": "325afc68d4381cf8b95288ebb9b1d38dc32ed579", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-session": "~2.5" + }, + "suggest": { + "ext-apcu": "APCU, to use the APC storage adapter", + "ext-dba": "DBA, to use the DBA storage adapter", + "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", + "ext-mongo": "Mongo, to use MongoDb storage adapter", + "ext-redis": "Redis, to use Redis storage adapter", + "ext-wincache": "WinCache, to use the WinCache storage adapter", + "ext-xcache": "XCache, to use the XCache storage adapter", + "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-session": "Zend\\Session component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a generic way to cache any data", + "homepage": "https://github.com/zendframework/zend-cache", + "keywords": [ + "cache", + "zf2" + ], + "time": "2015-07-16 18:44:41" + }, + { + "name": "zendframework/zend-config", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config.git", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", + "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "homepage": "https://github.com/zendframework/zend-config", + "keywords": [ + "config", + "zf2" + ], + "time": "2015-06-03 15:32:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "135af03d07fd048c322259aab6611d2be290475c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/135af03d07fd048c322259aab6611d2be290475c", + "reference": "135af03d07fd048c322259aab6611d2be290475c", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "eventmanager", + "zf2" + ], + "time": "2015-07-16 19:00:49" + }, + { + "name": "zendframework/zend-filter", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/93e6990a198e6cdd811064083acac4693f4b29ae", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-crypt": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed data filters", + "homepage": "https://github.com/zendframework/zend-filter", + "keywords": [ + "filter", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-i18n", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-i18n.git", + "reference": "509271eb7947e4aabebfc376104179cffea42696" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/509271eb7947e4aabebfc376104179cffea42696", + "reference": "509271eb7947e4aabebfc376104179cffea42696", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-view": "~2.5" + }, + "suggest": { + "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", + "zendframework/zend-filter": "You should install this package to use the provided filters", + "zendframework/zend-resources": "Translation resources", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "You should install this package to use the provided validators", + "zendframework/zend-view": "You should install this package to use the provided view helpers" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\I18n\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-i18n", + "keywords": [ + "i18n", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-json", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "4a3add6505fd8618728239d8ce35f182dfbdac02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4a3add6505fd8618728239d8ce35f182dfbdac02", + "reference": "4a3add6505fd8618728239d8ce35f182dfbdac02", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-http": "~2.5", + "zendframework/zend-server": "~2.5", + "zendframework/zendxml": "~1.0" + }, + "suggest": { + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-server": "Zend\\Server component", + "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "homepage": "https://github.com/zendframework/zend-json", + "keywords": [ + "json", + "zf2" + ], + "time": "2015-08-05 14:45:17" + }, + { + "name": "zendframework/zend-math", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-math.git", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-math/zipball/9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "ircmaxell/random-lib": "~1.1", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "ext-bcmath": "If using the bcmath functionality", + "ext-gmp": "If using the gmp functionality", + "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable", + "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-math", + "keywords": [ + "math", + "zf2" + ], + "time": "2015-06-03 15:32:02" + }, + { + "name": "zendframework/zend-serializer", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-serializer.git", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-json": "~2.5", + "zendframework/zend-math": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Serializer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", + "homepage": "https://github.com/zendframework/zend-serializer", + "keywords": [ + "serializer", + "zf2" + ], + "time": "2015-06-03 15:32:02" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "1dc33f23bd0a7f4d8ba743b915fae523d356027a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/1dc33f23bd0a7f4d8ba743b915fae523d356027a", + "reference": "1dc33f23bd0a7f4d8ba743b915fae523d356027a", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "~1.0", + "php": ">=5.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-di": "~2.5", + "zendframework/zend-mvc": "~2.5" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", + "zendframework/zend-di": "Zend\\Di component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-servicemanager", + "keywords": [ + "servicemanager", + "zf2" + ], + "time": "2015-07-23 21:49:08" + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "a35758803fc9051ec1aff43989e679b6b451b1b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/a35758803fc9051ec1aff43989e679b6b451b1b4", + "reference": "a35758803fc9051ec1aff43989e679b6b451b1b4", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-filter": "To support naming strategy hydrator usage", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-stdlib", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2015-07-21 17:08:05" + }, + { + "name": "zetacomponents/base", + "version": "1.9", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Base.git", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", + "shasum": "" + }, + "require-dev": { + "zetacomponents/unit-test": "*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sergey Alexeev" + }, + { + "name": "Sebastian Bergmann" + }, + { + "name": "Jan Borsodi" + }, + { + "name": "Raymond Bosman" + }, + { + "name": "Frederik Holljen" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Vadym Savchuk" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", + "homepage": "https://github.com/zetacomponents", + "time": "2014-09-19 03:28:34" + }, + { + "name": "zetacomponents/document", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Document.git", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "shasum": "" + }, + "require": { + "zetacomponents/base": "*" + }, + "require-dev": { + "zetacomponents/unit-test": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sebastian Bergmann" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", + "homepage": "https://github.com/zetacomponents", + "time": "2013-12-19 11:40:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.0.0" + }, + "platform-dev": [] +} diff --git a/MultiMailer/PHPMailer-5.2.10/docs/Callback_function_notes.txt b/MultiMailer/PHPMailer/docs/Callback_function_notes.txt similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/Callback_function_notes.txt rename to MultiMailer/PHPMailer/docs/Callback_function_notes.txt diff --git a/MultiMailer/PHPMailer-5.2.10/docs/DomainKeys_notes.txt b/MultiMailer/PHPMailer/docs/DomainKeys_notes.txt similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/DomainKeys_notes.txt rename to MultiMailer/PHPMailer/docs/DomainKeys_notes.txt diff --git a/MultiMailer/PHPMailer-5.2.10/docs/Note_for_SMTP_debugging.txt b/MultiMailer/PHPMailer/docs/Note_for_SMTP_debugging.txt similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/Note_for_SMTP_debugging.txt rename to MultiMailer/PHPMailer/docs/Note_for_SMTP_debugging.txt diff --git a/MultiMailer/PHPMailer-5.2.10/docs/extending.html b/MultiMailer/PHPMailer/docs/extending.html similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/docs/extending.html rename to MultiMailer/PHPMailer/docs/extending.html index ec2b851..4466a1d 100644 --- a/MultiMailer/PHPMailer-5.2.10/docs/extending.html +++ b/MultiMailer/PHPMailer/docs/extending.html @@ -18,10 +18,9 @@

1. Advanced Example

$mail = new PHPMailer(); -$mail->From = 'list@example.com'; -$mail->FromName = 'List manager'; -$mail->Host = 'smtp1.example.com;smtp2.example.com'; -$mail->Mailer = 'smtp'; +$mail->setFrom('list@example.com', 'List manager'); +$mail->Host = 'smtp1.example.com;smtp2.example.com'; +$mail->Mailer = 'smtp'; @mysqli_connect('localhost','root','password'); @mysqli_select_db("my_company"); diff --git a/MultiMailer/PHPMailer-5.2.10/docs/faq.html b/MultiMailer/PHPMailer/docs/faq.html similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/faq.html rename to MultiMailer/PHPMailer/docs/faq.html diff --git a/MultiMailer/PHPMailer-5.2.10/docs/generatedocs.sh b/MultiMailer/PHPMailer/docs/generatedocs.sh similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/generatedocs.sh rename to MultiMailer/PHPMailer/docs/generatedocs.sh diff --git a/MultiMailer/PHPMailer-5.2.10/docs/pop3_article.txt b/MultiMailer/PHPMailer/docs/pop3_article.txt similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/docs/pop3_article.txt rename to MultiMailer/PHPMailer/docs/pop3_article.txt diff --git a/MultiMailer/PHPMailer-5.2.10/examples/code_generator.phps b/MultiMailer/PHPMailer/examples/code_generator.phps similarity index 97% rename from MultiMailer/PHPMailer-5.2.10/examples/code_generator.phps rename to MultiMailer/PHPMailer/examples/code_generator.phps index 341a7d6..2345856 100644 --- a/MultiMailer/PHPMailer-5.2.10/examples/code_generator.phps +++ b/MultiMailer/PHPMailer/examples/code_generator.phps @@ -45,9 +45,11 @@ $example_code .= "\n\n\$results_messages = array();"; $mail = new PHPMailer(true); //PHPMailer instance with exceptions enabled $mail->CharSet = 'utf-8'; +ini_set('default_charset', 'UTF-8'); $mail->Debugoutput = $CFG['smtp_debugoutput']; $example_code .= "\n\n\$mail = new PHPMailer(true);"; $example_code .= "\n\$mail->CharSet = 'utf-8';"; +$example_code .= "\nini_set('default_charset', 'UTF-8');"; class phpmailerAppException extends phpmailerException { @@ -117,21 +119,19 @@ try { try { if ($_POST['From_Name'] != '') { $mail->addReplyTo($_POST['From_Email'], $_POST['From_Name']); - $mail->From = $_POST['From_Email']; - $mail->FromName = $_POST['From_Name']; + $mail->setFrom($_POST['From_Email'], $_POST['From_Name']); $example_code .= "\n\$mail->addReplyTo(\"" . $_POST['From_Email'] . "\", \"" . $_POST['From_Name'] . "\");"; - $example_code .= "\n\$mail->From = \"" . $_POST['From_Email'] . "\";"; - $example_code .= "\n\$mail->FromName = \"" . $_POST['From_Name'] . "\";"; + $example_code .= "\n\$mail->setFrom(\"" . + $_POST['From_Email'] . "\", \"" . $_POST['From_Name'] . "\");"; } else { $mail->addReplyTo($_POST['From_Email']); - $mail->From = $_POST['From_Email']; - $mail->FromName = $_POST['From_Email']; + $mail->setFrom($_POST['From_Email'], $_POST['From_Email']); $example_code .= "\n\$mail->addReplyTo(\"" . $_POST['From_Email'] . "\");"; - $example_code .= "\n\$mail->From = \"" . $_POST['From_Email'] . "\";"; - $example_code .= "\n\$mail->FromName = \"" . $_POST['From_Email'] . "\";"; + $example_code .= "\n\$mail->setFrom(\"" . + $_POST['From_Email'] . "\", \"" . $_POST['From_Email'] . "\");"; } if ($_POST['To_Name'] != '') { @@ -162,7 +162,7 @@ try { } $mail->Subject = $_POST['Subject'] . ' (PHPMailer test using ' . strtoupper($_POST['test_type']) . ')'; $example_code .= "\n\$mail->Subject = \"" . $_POST['Subject'] . - '(PHPMailer test using ' . strtoupper($_POST['test_type']) . ')";'; + ' (PHPMailer test using ' . strtoupper($_POST['test_type']) . ')";'; if ($_POST['Message'] == '') { $body = file_get_contents('contents.html'); @@ -594,4 +594,4 @@ if (isset($_POST["submit"]) && $_POST["submit"] == "Submit") { - \ No newline at end of file + diff --git a/MultiMailer/PHPMailer-5.2.10/examples/contents.html b/MultiMailer/PHPMailer/examples/contents.html similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/contents.html rename to MultiMailer/PHPMailer/examples/contents.html diff --git a/MultiMailer/PHPMailer-5.2.10/examples/contentsutf8.html b/MultiMailer/PHPMailer/examples/contentsutf8.html similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/contentsutf8.html rename to MultiMailer/PHPMailer/examples/contentsutf8.html diff --git a/MultiMailer/PHPMailer-5.2.10/examples/exceptions.phps b/MultiMailer/PHPMailer/examples/exceptions.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/exceptions.phps rename to MultiMailer/PHPMailer/examples/exceptions.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/gmail.phps b/MultiMailer/PHPMailer/examples/gmail.phps similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/examples/gmail.phps rename to MultiMailer/PHPMailer/examples/gmail.phps index b020f33..b3cc02d 100644 --- a/MultiMailer/PHPMailer-5.2.10/examples/gmail.phps +++ b/MultiMailer/PHPMailer/examples/gmail.phps @@ -26,6 +26,9 @@ $mail->Debugoutput = 'html'; //Set the hostname of the mail server $mail->Host = 'smtp.gmail.com'; +// use +// $mail->Host = gethostbyname('smtp.gmail.com'); +// if your network does not support SMTP over IPv6 //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission $mail->Port = 587; diff --git a/MultiMailer/PHPMailer/examples/gmail_xoauth.phps b/MultiMailer/PHPMailer/examples/gmail_xoauth.phps new file mode 100644 index 0000000..d64483a --- /dev/null +++ b/MultiMailer/PHPMailer/examples/gmail_xoauth.phps @@ -0,0 +1,85 @@ +isSMTP(); + +//Enable SMTP debugging +// 0 = off (for production use) +// 1 = client messages +// 2 = client and server messages +$mail->SMTPDebug = 0; + +//Ask for HTML-friendly debug output +$mail->Debugoutput = 'html'; + +//Set the hostname of the mail server +$mail->Host = 'smtp.gmail.com'; + +//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission +$mail->Port = 587; + +//Set the encryption system to use - ssl (deprecated) or tls +$mail->SMTPSecure = 'tls'; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Set AuthType +$mail->AuthType = 'XOAUTH2'; + +//User Email to use for SMTP authentication - Use the same Email used in Google Developer Console +$mail->oauthUserEmail = "someone@gmail.com"; + +//Obtained From Google Developer Console +$mail->oauthClientId = "RANDOMCHARS-----duv1n2.apps.googleusercontent.com"; + +//Obtained From Google Developer Console +$mail->oauthClientSecret = "RANDOMCHARS-----lGyjPcRtvP"; + +//Obtained By running get_oauth_token.php after setting up APP in Google Developer Console. +//Set Redirect URI in Developer Console as [https/http]:////get_oauth_token.php +// eg: http://localhost/phpmail/get_oauth_token.php +$mail->oauthRefreshToken = "RANDOMCHARS-----DWxgOvPT003r-yFUV49TQYag7_Aod7y0"; + +//Set who the message is to be sent from +//For gmail, this generally needs to be the same as the user you logged in as +$mail->setFrom('from@example.com', 'First Last'); + +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer GMail SMTP test'; + +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; + +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/MultiMailer/PHPMailer-5.2.10/examples/images/phpmailer.png b/MultiMailer/PHPMailer/examples/images/phpmailer.png similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/images/phpmailer.png rename to MultiMailer/PHPMailer/examples/images/phpmailer.png diff --git a/MultiMailer/PHPMailer-5.2.10/examples/images/phpmailer_mini.png b/MultiMailer/PHPMailer/examples/images/phpmailer_mini.png similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/images/phpmailer_mini.png rename to MultiMailer/PHPMailer/examples/images/phpmailer_mini.png diff --git a/MultiMailer/PHPMailer-5.2.10/examples/index.html b/MultiMailer/PHPMailer/examples/index.html similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/index.html rename to MultiMailer/PHPMailer/examples/index.html diff --git a/MultiMailer/PHPMailer-5.2.10/examples/mail.phps b/MultiMailer/PHPMailer/examples/mail.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/mail.phps rename to MultiMailer/PHPMailer/examples/mail.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/mailing_list.phps b/MultiMailer/PHPMailer/examples/mailing_list.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/mailing_list.phps rename to MultiMailer/PHPMailer/examples/mailing_list.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/pop_before_smtp.phps b/MultiMailer/PHPMailer/examples/pop_before_smtp.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/pop_before_smtp.phps rename to MultiMailer/PHPMailer/examples/pop_before_smtp.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/scripts/XRegExp.js b/MultiMailer/PHPMailer/examples/scripts/XRegExp.js similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/scripts/XRegExp.js rename to MultiMailer/PHPMailer/examples/scripts/XRegExp.js diff --git a/MultiMailer/PHPMailer-5.2.10/examples/scripts/shAutoloader.js b/MultiMailer/PHPMailer/examples/scripts/shAutoloader.js similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/scripts/shAutoloader.js rename to MultiMailer/PHPMailer/examples/scripts/shAutoloader.js diff --git a/MultiMailer/PHPMailer-5.2.10/examples/scripts/shBrushPhp.js b/MultiMailer/PHPMailer/examples/scripts/shBrushPhp.js similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/scripts/shBrushPhp.js rename to MultiMailer/PHPMailer/examples/scripts/shBrushPhp.js diff --git a/MultiMailer/PHPMailer-5.2.10/examples/scripts/shCore.js b/MultiMailer/PHPMailer/examples/scripts/shCore.js similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/scripts/shCore.js rename to MultiMailer/PHPMailer/examples/scripts/shCore.js diff --git a/MultiMailer/PHPMailer-5.2.10/examples/scripts/shLegacy.js b/MultiMailer/PHPMailer/examples/scripts/shLegacy.js similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/scripts/shLegacy.js rename to MultiMailer/PHPMailer/examples/scripts/shLegacy.js diff --git a/MultiMailer/PHPMailer-5.2.10/examples/send_file_upload.phps b/MultiMailer/PHPMailer/examples/send_file_upload.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/send_file_upload.phps rename to MultiMailer/PHPMailer/examples/send_file_upload.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/sendmail.phps b/MultiMailer/PHPMailer/examples/sendmail.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/sendmail.phps rename to MultiMailer/PHPMailer/examples/sendmail.phps diff --git a/MultiMailer/PHPMailer/examples/signed-mail.phps b/MultiMailer/PHPMailer/examples/signed-mail.phps new file mode 100644 index 0000000..9d70d01 --- /dev/null +++ b/MultiMailer/PHPMailer/examples/signed-mail.phps @@ -0,0 +1,89 @@ +setFrom('from@example.com', 'First Last'); +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); +//Set the subject line +$mail->Subject = 'PHPMailer mail() test'; +//Read an HTML message body from an external file, convert referenced images to embedded, +//Convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//Configure message signing (the actual signing does not occur until sending) +$mail->sign( + '/path/to/cert.crt', //The location of your certificate file + '/path/to/cert.key', //The location of your private key file + 'yourSecretPrivateKeyPassword', //The password you protected your private key with (not the Import Password! may be empty but parameter must not be omitted!) + '/path/to/certchain.pem' //The location of your chain file +); + +//Send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} + +/** + * REMARKS: + * If your email client does not support S/MIME it will most likely just show an attachment smime.p7s which is the signature contained in the email. + * Other clients, such as Thunderbird support S/MIME natively and will validate the signature automatically and report the result in some way. + */ +?> diff --git a/MultiMailer/PHPMailer-5.2.10/examples/smtp.phps b/MultiMailer/PHPMailer/examples/smtp.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/smtp.phps rename to MultiMailer/PHPMailer/examples/smtp.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/smtp_check.phps b/MultiMailer/PHPMailer/examples/smtp_check.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/smtp_check.phps rename to MultiMailer/PHPMailer/examples/smtp_check.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/smtp_no_auth.phps b/MultiMailer/PHPMailer/examples/smtp_no_auth.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/smtp_no_auth.phps rename to MultiMailer/PHPMailer/examples/smtp_no_auth.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/ssl_options.phps b/MultiMailer/PHPMailer/examples/ssl_options.phps similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/ssl_options.phps rename to MultiMailer/PHPMailer/examples/ssl_options.phps diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCore.css b/MultiMailer/PHPMailer/examples/styles/shCore.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCore.css rename to MultiMailer/PHPMailer/examples/styles/shCore.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreDefault.css b/MultiMailer/PHPMailer/examples/styles/shCoreDefault.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreDefault.css rename to MultiMailer/PHPMailer/examples/styles/shCoreDefault.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreDjango.css b/MultiMailer/PHPMailer/examples/styles/shCoreDjango.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreDjango.css rename to MultiMailer/PHPMailer/examples/styles/shCoreDjango.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreEclipse.css b/MultiMailer/PHPMailer/examples/styles/shCoreEclipse.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreEclipse.css rename to MultiMailer/PHPMailer/examples/styles/shCoreEclipse.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreEmacs.css b/MultiMailer/PHPMailer/examples/styles/shCoreEmacs.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreEmacs.css rename to MultiMailer/PHPMailer/examples/styles/shCoreEmacs.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreFadeToGrey.css b/MultiMailer/PHPMailer/examples/styles/shCoreFadeToGrey.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreFadeToGrey.css rename to MultiMailer/PHPMailer/examples/styles/shCoreFadeToGrey.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreMDUltra.css b/MultiMailer/PHPMailer/examples/styles/shCoreMDUltra.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreMDUltra.css rename to MultiMailer/PHPMailer/examples/styles/shCoreMDUltra.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreMidnight.css b/MultiMailer/PHPMailer/examples/styles/shCoreMidnight.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreMidnight.css rename to MultiMailer/PHPMailer/examples/styles/shCoreMidnight.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreRDark.css b/MultiMailer/PHPMailer/examples/styles/shCoreRDark.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shCoreRDark.css rename to MultiMailer/PHPMailer/examples/styles/shCoreRDark.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeAppleScript.css b/MultiMailer/PHPMailer/examples/styles/shThemeAppleScript.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeAppleScript.css rename to MultiMailer/PHPMailer/examples/styles/shThemeAppleScript.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeDefault.css b/MultiMailer/PHPMailer/examples/styles/shThemeDefault.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeDefault.css rename to MultiMailer/PHPMailer/examples/styles/shThemeDefault.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeDjango.css b/MultiMailer/PHPMailer/examples/styles/shThemeDjango.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeDjango.css rename to MultiMailer/PHPMailer/examples/styles/shThemeDjango.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeEclipse.css b/MultiMailer/PHPMailer/examples/styles/shThemeEclipse.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeEclipse.css rename to MultiMailer/PHPMailer/examples/styles/shThemeEclipse.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeEmacs.css b/MultiMailer/PHPMailer/examples/styles/shThemeEmacs.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeEmacs.css rename to MultiMailer/PHPMailer/examples/styles/shThemeEmacs.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeFadeToGrey.css b/MultiMailer/PHPMailer/examples/styles/shThemeFadeToGrey.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeFadeToGrey.css rename to MultiMailer/PHPMailer/examples/styles/shThemeFadeToGrey.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeMDUltra.css b/MultiMailer/PHPMailer/examples/styles/shThemeMDUltra.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeMDUltra.css rename to MultiMailer/PHPMailer/examples/styles/shThemeMDUltra.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeMidnight.css b/MultiMailer/PHPMailer/examples/styles/shThemeMidnight.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeMidnight.css rename to MultiMailer/PHPMailer/examples/styles/shThemeMidnight.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeRDark.css b/MultiMailer/PHPMailer/examples/styles/shThemeRDark.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeRDark.css rename to MultiMailer/PHPMailer/examples/styles/shThemeRDark.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeVisualStudio.css b/MultiMailer/PHPMailer/examples/styles/shThemeVisualStudio.css similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/shThemeVisualStudio.css rename to MultiMailer/PHPMailer/examples/styles/shThemeVisualStudio.css diff --git a/MultiMailer/PHPMailer-5.2.10/examples/styles/wrapping.png b/MultiMailer/PHPMailer/examples/styles/wrapping.png similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/examples/styles/wrapping.png rename to MultiMailer/PHPMailer/examples/styles/wrapping.png diff --git a/MultiMailer/PHPMailer-5.2.10/extras/EasyPeasyICS.php b/MultiMailer/PHPMailer/extras/EasyPeasyICS.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/extras/EasyPeasyICS.php rename to MultiMailer/PHPMailer/extras/EasyPeasyICS.php index 1d50b01..d8bfcfa 100644 --- a/MultiMailer/PHPMailer-5.2.10/extras/EasyPeasyICS.php +++ b/MultiMailer/PHPMailer/extras/EasyPeasyICS.php @@ -21,12 +21,12 @@ class EasyPeasyICS { /** * The name of the calendar - * @type string + * @var string */ protected $calendarName; /** * The array of events to add to this calendar - * @type array + * @var array */ protected $events = array(); diff --git a/MultiMailer/PHPMailer-5.2.10/extras/README.md b/MultiMailer/PHPMailer/extras/README.md similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/extras/README.md rename to MultiMailer/PHPMailer/extras/README.md diff --git a/MultiMailer/PHPMailer-5.2.10/extras/htmlfilter.php b/MultiMailer/PHPMailer/extras/htmlfilter.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/extras/htmlfilter.php rename to MultiMailer/PHPMailer/extras/htmlfilter.php diff --git a/MultiMailer/PHPMailer-5.2.10/extras/ntlm_sasl_client.php b/MultiMailer/PHPMailer/extras/ntlm_sasl_client.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/extras/ntlm_sasl_client.php rename to MultiMailer/PHPMailer/extras/ntlm_sasl_client.php diff --git a/MultiMailer/PHPMailer/get_oauth_token.php b/MultiMailer/PHPMailer/get_oauth_token.php new file mode 100644 index 0000000..46eb28a --- /dev/null +++ b/MultiMailer/PHPMailer/get_oauth_token.php @@ -0,0 +1,60 @@ +//get_oauth_token.php + * e.g.: http://localhost/phpmail/get_oauth_token.php + * * Ensure dependencies are installed with 'composer install' + * * Set up an app in your Google developer console + * * Set the script address as the app's redirect URL + * If no refresh token is obtained when running this file, revoke access to your app + * using link: https://accounts.google.com/b/0/IssuedAuthSubTokens and run the script again. + * This script requires PHP 5.4 or later + * PHP Version 5.4 + */ + +require 'vendor/autoload.php'; + +session_start(); + +//If this automatic URL doesn't work, set it yourself manually +$redirectUri = isset($_SERVER['HTTPS']) ? 'https://' : 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; +//$redirectUri = 'http://localhost/phpmailer/get_oauth_token.php'; + +//These details obtained are by setting up app in Google developer console. +$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com'; +$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP'; + +//Set Redirect URI in Developer Console as [https/http]:////get_oauth_token.php +$provider = new League\OAuth2\Client\Provider\Google( + array( + 'clientId' => $clientId, + 'clientSecret' => $clientSecret, + 'redirectUri' => $redirectUri, + 'scopes' => array('https://mail.google.com/'), + 'accessType' => 'offline' + ) +); + +if (!isset($_GET['code'])) { + // If we don't have an authorization code then get one + $authUrl = $provider->getAuthorizationUrl(); + $_SESSION['oauth2state'] = $provider->getState(); + header('Location: ' . $authUrl); + exit; +// Check given state against previously stored one to mitigate CSRF attack +} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { + unset($_SESSION['oauth2state']); + exit('Invalid state'); +} else { + // Try to get an access token (using the authorization code grant) + $token = $provider->getAccessToken( + 'authorization_code', + array( + 'code' => $_GET['code'] + ) + ); + + // Use this to get a new access token if the old one expires + echo 'Refresh Token: ' . $token->getRefreshToken(); +} diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-am.php b/MultiMailer/PHPMailer/language/phpmailer.lang-am.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-am.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-am.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ar.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ar.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ar.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ar.php index b8c02c7..790e2a5 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ar.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ar.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'خطأ في الملف: لا يمكن فتحه: '; $PHPMAILER_LANG['from_failed'] = 'خطأ على مستوى عنوان المرسل : '; $PHPMAILER_LANG['instantiate'] = 'لا يمكن توفير خدمة البريد.'; -$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح.'; +$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: '; $PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.'; $PHPMAILER_LANG['provide_address'] = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.'; $PHPMAILER_LANG['recipients_failed'] = 'خطأ SMTP: الأخطاء التالية ' . diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-az.php b/MultiMailer/PHPMailer/language/phpmailer.lang-az.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-az.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-az.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-be.php b/MultiMailer/PHPMailer/language/phpmailer.lang-be.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-be.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-be.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-bg.php b/MultiMailer/PHPMailer/language/phpmailer.lang-bg.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-bg.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-bg.php index 6b5c4a1..b22941f 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-bg.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-bg.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: '; $PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: '; $PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес'; +$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: '; $PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.'; $PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-br.php b/MultiMailer/PHPMailer/language/phpmailer.lang-br.php similarity index 93% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-br.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-br.php index c407fe9..2020c3d 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-br.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-br.php @@ -4,6 +4,7 @@ * @package PHPMailer * @author Paulo Henrique Garcia * @author Lucas Guimarães + * @author Phelipe Alves */ $PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; @@ -24,4 +25,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; $PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; $PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou resetar a variável: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensão ausente: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ca.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ca.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ca.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ca.php index 5620d39..4117596 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ca.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ca.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Error d’Arxiu: No es pot obrir l’arxiu: '; $PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: '; $PHPMAILER_LANG['instantiate'] = 'No s’ha pogut crear una instància de la funció Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Adreça d’email invalida'; +$PHPMAILER_LANG['invalid_address'] = 'Adreça d’email invalida: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat'; $PHPMAILER_LANG['provide_address'] = 'S’ha de proveir almenys una adreça d’email com a destinatari.'; $PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ch.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ch.php similarity index 94% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ch.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ch.php index 1c6ebaf..4fda6b8 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ch.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ch.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = '文件错误:不能打开文件:'; $PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了: '; $PHPMAILER_LANG['instantiate'] = '不能实现mail方法。'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。'; $PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下面的 收件人失败了: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-cz.php b/MultiMailer/PHPMailer/language/phpmailer.lang-cz.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-cz.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-cz.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-de.php b/MultiMailer/PHPMailer/language/phpmailer.lang-de.php similarity index 97% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-de.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-de.php index 233aa75..43057ef 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-de.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-de.php @@ -14,7 +14,7 @@ $PHPMAILER_LANG['file_open'] = 'Datei Fehler: konnte folgende Datei nicht öffnen: '; $PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: '; $PHPMAILER_LANG['instantiate'] = 'Mail Funktion konnte nicht initialisiert werden.'; -$PHPMAILER_LANG['invalid_address'] = 'E-Mail wird nicht gesendet, die Adresse ist ungültig.'; +$PHPMAILER_LANG['invalid_address'] = 'E-Mail wird nicht gesendet, die Adresse ist ungültig: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.'; $PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfänger E-Mailadresse an.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Fehler: Die folgenden Empfänger sind nicht korrekt: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-dk.php b/MultiMailer/PHPMailer/language/phpmailer.lang-dk.php similarity index 94% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-dk.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-dk.php index 8968c07..e725f4b 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-dk.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-dk.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: '; $PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; $PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere email funktionen.'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; $PHPMAILER_LANG['provide_address'] = 'Du skal indtaste mindst en modtagers emailadresse.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-el.php b/MultiMailer/PHPMailer/language/phpmailer.lang-el.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-el.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-el.php index 08c5f11..7109641 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-el.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-el.php @@ -14,7 +14,7 @@ $PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: '; $PHPMAILER_LANG['from_failed'] = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: '; $PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης Mail function.'; -$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη.'; +$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.'; $PHPMAILER_LANG['provide_address'] = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-eo.php b/MultiMailer/PHPMailer/language/phpmailer.lang-eo.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-eo.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-eo.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-es.php b/MultiMailer/PHPMailer/language/phpmailer.lang-es.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-es.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-es.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-et.php b/MultiMailer/PHPMailer/language/phpmailer.lang-et.php similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-et.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-et.php index 93b6011..7e06da1 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-et.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-et.php @@ -24,4 +24,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.'; $PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: '; $PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fa.php b/MultiMailer/PHPMailer/language/phpmailer.lang-fa.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fa.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-fa.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fi.php b/MultiMailer/PHPMailer/language/phpmailer.lang-fi.php similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fi.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-fi.php index 739c235..ec4e752 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fi.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-fi.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Tiedostovirhe: Ei voida avata tiedostoa: '; $PHPMAILER_LANG['from_failed'] = 'Seuraava lähettäjän osoite on virheellinen: '; $PHPMAILER_LANG['instantiate'] = 'mail-funktion luonti epäonnistui.'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.'; $PHPMAILER_LANG['provide_address'] = 'Aseta vähintään yksi vastaanottajan sähköpostiosoite.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.'; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fo.php b/MultiMailer/PHPMailer/language/phpmailer.lang-fo.php similarity index 94% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fo.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-fo.php index 724f3ed..68cdef1 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fo.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-fo.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; $PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; $PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; $PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fr.php b/MultiMailer/PHPMailer/language/phpmailer.lang-fr.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fr.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-fr.php index 78a66ae..a661f98 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-fr.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-fr.php @@ -26,4 +26,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'Échec de la connexion SMTP.'; $PHPMAILER_LANG['smtp_error'] = 'Erreur du serveur SMTP : '; $PHPMAILER_LANG['variable_set'] = 'Impossible d\'initialiser ou de réinitialiser une variable : '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Extension manquante : '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-gl.php b/MultiMailer/PHPMailer/language/phpmailer.lang-gl.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-gl.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-gl.php index 5bd8b44..9b4ce4d 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-gl.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-gl.php @@ -24,4 +24,3 @@ $PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; $PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: '; //$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-he.php b/MultiMailer/PHPMailer/language/phpmailer.lang-he.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-he.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-he.php index 857f723..70eb717 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-he.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-he.php @@ -9,7 +9,7 @@ $PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.'; $PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.'; $PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק'; -$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה'; +$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: '; $PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: '; $PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: '; $PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: '; @@ -23,3 +23,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; $PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: '; $PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: '; +//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-hr.php b/MultiMailer/PHPMailer/language/phpmailer.lang-hr.php similarity index 94% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-hr.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-hr.php index 55ed6a0..3822920 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-hr.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-hr.php @@ -16,11 +16,11 @@ $PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: '; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: '; $PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa.'; +$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; $PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.'; $PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.'; $PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: '; $PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-hu.php b/MultiMailer/PHPMailer/language/phpmailer.lang-hu.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-hu.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-hu.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-id.php b/MultiMailer/PHPMailer/language/phpmailer.lang-id.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-id.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-id.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-it.php b/MultiMailer/PHPMailer/language/phpmailer.lang-it.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-it.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-it.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ja.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ja.php similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ja.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ja.php index 29f8662..2d77872 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ja.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ja.php @@ -16,7 +16,7 @@ $PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: '; $PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: '; $PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。'; $PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。'; $PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ka.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ka.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ka.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ka.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ko.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ko.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ko.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ko.php index 7283881..9599fa6 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ko.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ko.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: '; $PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: '; $PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다'; -$PHPMAILER_LANG['invalid_address'] = '잘못된 주소'; +$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: '; $PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.'; $PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lt.php b/MultiMailer/PHPMailer/language/phpmailer.lang-lt.php similarity index 95% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lt.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-lt.php index 2726773..1253a4f 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lt.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-lt.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: '; $PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: '; $PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.'; -$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas'; +$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: '; $PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.'; $PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lv.php b/MultiMailer/PHPMailer/language/phpmailer.lang-lv.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lv.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-lv.php index b2ab55f..39bf9a1 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-lv.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-lv.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: '; $PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: '; $PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.'; -$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese'; +$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: '; $PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.'; $PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ms.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ms.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ms.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ms.php index 11d3daa..4e2c340 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ms.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ms.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Ralat Fail: Tidak dapat membuka fail: '; $PHPMAILER_LANG['from_failed'] = 'Berikut merupakan ralat dari alamat e-mel: '; $PHPMAILER_LANG['instantiate'] = 'Tidak dapat memberi contoh fungsi e-mel.'; -$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah'; +$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah: '; $PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.'; $PHPMAILER_LANG['provide_address'] = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.'; $PHPMAILER_LANG['recipients_failed'] = 'Ralat SMTP: Penerima e-mel berikut telah gagal: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-nl.php b/MultiMailer/PHPMailer/language/phpmailer.lang-nl.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-nl.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-nl.php index 54a8f9a..0fc38be 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-nl.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-nl.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: '; $PHPMAILER_LANG['from_failed'] = 'Het volgende afzendersadres is mislukt: '; $PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.'; -$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres'; +$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; $PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-no.php b/MultiMailer/PHPMailer/language/phpmailer.lang-no.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-no.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-no.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-pl.php b/MultiMailer/PHPMailer/language/phpmailer.lang-pl.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-pl.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-pl.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-pt.php b/MultiMailer/PHPMailer/language/phpmailer.lang-pt.php similarity index 96% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-pt.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-pt.php index 3916486..f365d5d 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-pt.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-pt.php @@ -23,4 +23,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; $PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; $PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ro.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ro.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ro.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ro.php index e8a56fa..cf37cc1 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ro.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ro.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Eroare de fisier: Nu pot deschide fisierul: '; $PHPMAILER_LANG['from_failed'] = 'Urmatoarele adrese From au dat eroare: '; $PHPMAILER_LANG['instantiate'] = 'Nu am putut instantia functia mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este valida. '; +$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este valida: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.'; $PHPMAILER_LANG['provide_address'] = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).'; $PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ru.php b/MultiMailer/PHPMailer/language/phpmailer.lang-ru.php similarity index 88% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ru.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-ru.php index e6e4496..50020d5 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-ru.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-ru.php @@ -3,6 +3,7 @@ * Russian PHPMailer language file: refer to English translation for definitive list * @package PHPMailer * @author Alexey Chumakov + * @author Foster Snowhill */ $PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.'; @@ -15,7 +16,7 @@ $PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: '; $PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail.'; $PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - почтовый сервер не поддерживается.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.'; $PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: '; $PHPMAILER_LANG['empty_message'] = 'Пустое тело сообщения'; $PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: '; @@ -23,4 +24,4 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером'; $PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: '; $PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; +$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-se.php b/MultiMailer/PHPMailer/language/phpmailer.lang-se.php similarity index 94% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-se.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-se.php index c71cb51..2c9ecec 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-se.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-se.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: '; $PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: '; $PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.'; -//$PHPMAILER_LANG['invalid_address'] = 'Not sending, email address is invalid: '; +//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; $PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.'; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sk.php b/MultiMailer/PHPMailer/language/phpmailer.lang-sk.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sk.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-sk.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sl.php b/MultiMailer/PHPMailer/language/phpmailer.lang-sl.php similarity index 97% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sl.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-sl.php index 14fa2a5..54c9572 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sl.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-sl.php @@ -4,7 +4,7 @@ * @package PHPMailer * @author Klemen Tušar */ - + $PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; $PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Ne morem vzpostaviti povezave s SMTP gostiteljem.'; $PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.'; @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; $PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; $PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; -$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven.'; +$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; $PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sr.php b/MultiMailer/PHPMailer/language/phpmailer.lang-sr.php similarity index 97% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sr.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-sr.php index 26360b2..ed95ca6 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-sr.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-sr.php @@ -16,7 +16,7 @@ $PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; $PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; $PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; -$PHPMAILER_LANG['invalid_address'] = 'Порука није послата због неисправне адресе.'; +$PHPMAILER_LANG['invalid_address'] = 'Порука није послата због неисправне адресе: '; $PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; $PHPMAILER_LANG['provide_address'] = 'Потребно је задати најмање једну адресу.'; $PHPMAILER_LANG['signing'] = 'Грешка приликом пријављивања: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-tr.php b/MultiMailer/PHPMailer/language/phpmailer.lang-tr.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-tr.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-tr.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-uk.php b/MultiMailer/PHPMailer/language/phpmailer.lang-uk.php similarity index 83% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-uk.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-uk.php index 64ede44..9a7b346 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-uk.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-uk.php @@ -3,10 +3,11 @@ * Ukrainian PHPMailer language file: refer to English translation for definitive list * @package PHPMailer * @author Yuriy Rudyy + * @fixed by Boris Yurchenko */ $PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.'; -$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається підєднатися до серверу SMTP.'; +$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до серверу SMTP.'; $PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийняті.'; $PHPMAILER_LANG['encoding'] = 'Невідомий тип кодування: '; $PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: '; @@ -16,11 +17,11 @@ $PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail.'; $PHPMAILER_LANG['provide_address'] = 'Будь-ласка, введіть хоча б одну адресу e-mail отримувача.'; $PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; -$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: відправти наступним отрмувачам не вдалася: '; +$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: відправлення наступним отримувачам не вдалося: '; $PHPMAILER_LANG['empty_message'] = 'Пусте тіло повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено, невірний формат email адреси: '; +$PHPMAILER_LANG['invalid_address'] = 'Не відправлено, невірний формат адреси e-mail: '; $PHPMAILER_LANG['signing'] = 'Помилка підпису: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка зєднання із SMTP-сервером'; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання із SMTP-сервером'; $PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; $PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або перевстановити змінну: '; //$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-vi.php b/MultiMailer/PHPMailer/language/phpmailer.lang-vi.php similarity index 99% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-vi.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-vi.php index 8a3ea71..c60dade 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-vi.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-vi.php @@ -15,7 +15,7 @@ $PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: '; $PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: '; $PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.'; -$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng'; +$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: '; $PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.'; $PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.'; $PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: '; diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-zh.php b/MultiMailer/PHPMailer/language/phpmailer.lang-zh.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-zh.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-zh.php diff --git a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-zh_cn.php b/MultiMailer/PHPMailer/language/phpmailer.lang-zh_cn.php similarity index 98% rename from MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-zh_cn.php rename to MultiMailer/PHPMailer/language/phpmailer.lang-zh_cn.php index 1586dba..d85a0b1 100644 --- a/MultiMailer/PHPMailer-5.2.10/language/phpmailer.lang-zh_cn.php +++ b/MultiMailer/PHPMailer/language/phpmailer.lang-zh_cn.php @@ -16,7 +16,7 @@ $PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:'; $PHPMAILER_LANG['from_failed'] = '发送地址错误:'; $PHPMAILER_LANG['instantiate'] = '未知函数调用。'; -$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的。'; +$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的:'; $PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。'; $PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地址错误:'; diff --git a/MultiMailer/PHPMailer-5.2.10/test/bootstrap.php b/MultiMailer/PHPMailer/test/bootstrap.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/bootstrap.php rename to MultiMailer/PHPMailer/test/bootstrap.php diff --git a/MultiMailer/PHPMailer-5.2.10/test/fakepopserver.sh b/MultiMailer/PHPMailer/test/fakepopserver.sh similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/fakepopserver.sh rename to MultiMailer/PHPMailer/test/fakepopserver.sh diff --git a/MultiMailer/PHPMailer-5.2.10/test/fakesendmail.sh b/MultiMailer/PHPMailer/test/fakesendmail.sh similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/fakesendmail.sh rename to MultiMailer/PHPMailer/test/fakesendmail.sh diff --git a/MultiMailer/PHPMailer-5.2.10/test/phpmailerLangTest.php b/MultiMailer/PHPMailer/test/phpmailerLangTest.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/phpmailerLangTest.php rename to MultiMailer/PHPMailer/test/phpmailerLangTest.php diff --git a/MultiMailer/PHPMailer-5.2.10/test/phpmailerTest.php b/MultiMailer/PHPMailer/test/phpmailerTest.php similarity index 86% rename from MultiMailer/PHPMailer-5.2.10/test/phpmailerTest.php rename to MultiMailer/PHPMailer/test/phpmailerTest.php index d3ee26e..8958231 100644 --- a/MultiMailer/PHPMailer-5.2.10/test/phpmailerTest.php +++ b/MultiMailer/PHPMailer/test/phpmailerTest.php @@ -24,40 +24,40 @@ class PHPMailerTest extends PHPUnit_Framework_TestCase /** * Holds the default phpmailer instance. * @private - * @type PHPMailer + * @var PHPMailer */ public $Mail; /** * Holds the SMTP mail host. * @public - * @type string + * @var string */ public $Host = ''; /** * Holds the change log. * @private - * @type string[] + * @var string[] */ public $ChangeLog = array(); /** * Holds the note log. * @private - * @type string[] + * @var string[] */ public $NoteLog = array(); /** * Default include path - * @type string + * @var string */ public $INCLUDE_DIR = '../'; /** * PIDs of any processes we need to kill - * @type array + * @var array * @access private */ private $pids = array(); @@ -107,7 +107,6 @@ public function setUp() $this->Mail->Mailer = 'smtp'; } else { $this->Mail->Mailer = 'mail'; - $this->Mail->Sender = 'unit_test@phpmailer.example.com'; } if (array_key_exists('mail_to', $_REQUEST)) { $this->setAddress($_REQUEST['mail_to'], 'Test User', 'to'); @@ -362,7 +361,6 @@ public function testValidate() '"Fred\ Bloggs"@iana.org', '"Joe.\Blow"@iana.org', '"Abc@def"@iana.org', - '"Fred Bloggs"@iana.org', 'user+mailbox@iana.org', 'customer/department=shipping@iana.org', '$A12345@iana.org', @@ -608,16 +606,28 @@ public function testValidate() 'first.last@[IPv6::a2::b4]', 'first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:]', 'first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4]', - 'first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4]' + 'first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4]', + "(\r\n RCPT TO:websec02@d.mbsd.jp\r\n DATA \\\nSubject: spam10\\\n\r\n Hello,\r\n this is a spam mail.\\\n.\r\n QUIT\r\n ) a@gmail.com" //This is valid RCC5322, but we don't want to allow it + ); + // IDNs in Unicode and ASCII forms. + $unicodeaddresses = array( + 'first.last@bücher.ch', + 'first.last@кто.рф', + 'first.last@phplíst.com', + ); + $asciiaddresses = array( + 'first.last@xn--bcher-kva.ch', + 'first.last@xn--j1ail.xn--p1ai', + 'first.last@xn--phplst-6va.com', ); $goodfails = array(); - foreach ($validaddresses as $address) { + foreach (array_merge($validaddresses, $asciiaddresses) as $address) { if (!PHPMailer::validateAddress($address)) { $goodfails[] = $address; } } $badpasses = array(); - foreach ($invalidaddresses as $address) { + foreach (array_merge($invalidaddresses, $unicodeaddresses) as $address) { if (PHPMailer::validateAddress($address)) { $badpasses[] = $address; } @@ -761,6 +771,8 @@ public function testQuotedPrintable() //Check that a quoted printable encode and decode results in the same as went in $t = file_get_contents(__FILE__); //Use this file as test content + //Force line breaks to UNIX-style + $t = str_replace(array("\r\n", "\r"), "\n", $t); $this->assertEquals( $t, quoted_printable_decode($this->Mail->encodeQP($t)), @@ -771,6 +783,13 @@ public function testQuotedPrintable() $this->Mail->encodeQPphp($t), 'Quoted-Printable BC wrapper failed' ); + //Force line breaks to Windows-style + $t = str_replace("\n", "\r\n", $t); + $this->assertEquals( + $t, + quoted_printable_decode($this->Mail->encodeQP($t)), + 'Quoted-Printable encoding round-trip failed (Windows line breaks)' + ); } /** @@ -966,6 +985,31 @@ public function testHTMLAttachment() $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); } + /** + * Test embedded image without a name + */ + public function testHTMLStringEmbedNoName() + { + $this->Mail->Body = 'This is the HTML part of the email.'; + $this->Mail->Subject .= ': HTML + unnamed embedded image'; + $this->Mail->isHTML(true); + + if (!$this->Mail->addStringEmbeddedImage( + file_get_contents('../examples/images/phpmailer_mini.png'), + md5('phpmailer_mini.png').'@phpmailer.0', + '', //intentionally empty name + 'base64', + 'image/png', + 'inline') + ) { + $this->assertTrue(false, $this->Mail->ErrorInfo); + return; + } + + $this->buildBody(); + $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); + } + /** * Simple HTML and multiple attachment test */ @@ -1364,6 +1408,90 @@ public function testAddressing() $this->Mail->clearReplyTos(); } + /** + * Test RFC822 address splitting. + */ + public function testAddressSplitting() + { + //Test built-in address parser + $this->assertCount( + 2, + $this->Mail->parseAddresses( + 'Joe User , Jill User ' + ), + 'Failed to recognise address list (IMAP parser)' + ); + //Test simple address parser + $this->assertCount( + 2, + $this->Mail->parseAddresses( + 'Joe User , Jill User ', + false + ), + 'Failed to recognise address list' + ); + //Test single address + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'Joe User ', + false + ), + 'Failed to recognise single address' + ); + //Test quoted name IMAP + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'Tim "The Book" O\'Reilly ' + ), + 'Failed to recognise quoted name (IMAP)' + ); + //Test quoted name + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'Tim "The Book" O\'Reilly ', + false + ), + 'Failed to recognise quoted name' + ); + //Test single address IMAP + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'Joe User ' + ), + 'Failed to recognise single address (IMAP)' + ); + //Test unnamed address + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'joe@example.com', + false + ), + 'Failed to recognise unnamed address' + ); + //Test unnamed address IMAP + $this->assertNotEmpty( + $this->Mail->parseAddresses( + 'joe@example.com' + ), + 'Failed to recognise unnamed address (IMAP)' + ); + //Test invalid addresses + $this->assertEmpty( + $this->Mail->parseAddresses( + 'Joe User , Jill User ' + ), + 'Failed to recognise invalid addresses (IMAP)' + ); + //Test invalid addresses + $this->assertEmpty( + $this->Mail->parseAddresses( + 'Joe User , Jill User ', + false + ), + 'Failed to recognise invalid addresses' + ); + } + /** * Test address escaping. */ @@ -1697,6 +1825,161 @@ public function testMiscellaneous() $this->assertEquals($q['extension'], 'mp3', 'Windows extension not matched'); $this->assertEquals($q['filename'], '飛兒樂 團光茫', 'Windows filename not matched'); } + public function testBadSMTP() + { + $this->Mail->smtpConnect(); + $smtp = $this->Mail->getSMTPInstance(); + $this->assertFalse($smtp->mail("somewhere\nbad"), 'Bad SMTP command containing breaks accepted'); + } + + /** + * Tests the Custom header getter + */ + public function testCustomHeaderGetter() + { + $this->Mail->addCustomHeader('foo', 'bar'); + $this->assertEquals(array(array('foo', 'bar')), $this->Mail->getCustomHeaders()); + + $this->Mail->addCustomHeader('foo', 'baz'); + $this->assertEquals(array( + array('foo', 'bar'), + array('foo', 'baz') + ), $this->Mail->getCustomHeaders()); + + $this->Mail->clearCustomHeaders(); + $this->assertEmpty($this->Mail->getCustomHeaders()); + + $this->Mail->addCustomHeader('yux'); + $this->assertEquals(array(array('yux')), $this->Mail->getCustomHeaders()); + + $this->Mail->addCustomHeader('Content-Type: application/json'); + $this->assertEquals(array( + array('yux'), + array('Content-Type', ' application/json') + ), $this->Mail->getCustomHeaders()); + } + + /** + * Tests setting and retrieving ConfirmReadingTo address, also known as "read receipt" address. + */ + public function testConfirmReadingTo() + { + $this->Mail->CharSet = 'utf-8'; + $this->buildBody(); + + $this->Mail->ConfirmReadingTo = 'test@example..com'; //Invalid address + $this->assertFalse($this->Mail->send(), $this->Mail->ErrorInfo); + + $this->Mail->ConfirmReadingTo = ' test@example.com'; //Extra space to trim + $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); + $this->assertEquals( + 'test@example.com', + $this->Mail->ConfirmReadingTo, + 'Unexpected read receipt address'); + + $this->Mail->ConfirmReadingTo = 'test@françois.ch'; //Address with IDN + if ($this->Mail->idnSupported()) { + $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); + $this->assertEquals( + 'test@xn--franois-xxa.ch', + $this->Mail->ConfirmReadingTo, + 'IDN address not converted to punycode'); + } else { + $this->assertFalse($this->Mail->send(), $this->Mail->ErrorInfo); + } + } + + /** + * Tests CharSet and Unicode -> ASCII conversions for addresses with IDN. + */ + public function testConvertEncoding() + { + if (!$this->Mail->idnSupported()) { + $this->markTestSkipped('intl and/or mbstring extensions are not available'); + } + + $this->Mail->clearAllRecipients(); + $this->Mail->clearReplyTos(); + + // This file is UTF-8 encoded. Create a domain encoded in "iso-8859-1". + $domain = '@' . mb_convert_encoding('françois.ch', 'ISO-8859-1', 'UTF-8'); + $this->Mail->addAddress('test' . $domain); + $this->Mail->addCC('test+cc' . $domain); + $this->Mail->addBCC('test+bcc' . $domain); + $this->Mail->addReplyTo('test+replyto' . $domain); + + // Queued addresses are not returned by get*Addresses() before send() call. + $this->assertEmpty($this->Mail->getToAddresses(), 'Bad "to" recipients'); + $this->assertEmpty($this->Mail->getCcAddresses(), 'Bad "cc" recipients'); + $this->assertEmpty($this->Mail->getBccAddresses(), 'Bad "bcc" recipients'); + $this->assertEmpty($this->Mail->getReplyToAddresses(), 'Bad "reply-to" recipients'); + + // Clear queued BCC recipient. + $this->Mail->clearBCCs(); + + $this->buildBody(); + $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); + + // Addresses with IDN are returned by get*Addresses() after send() call. + $domain = $this->Mail->punyencodeAddress($domain); + $this->assertEquals( + array(array('test' . $domain, '')), + $this->Mail->getToAddresses(), + 'Bad "to" recipients'); + $this->assertEquals( + array(array('test+cc' . $domain, '')), + $this->Mail->getCcAddresses(), + 'Bad "cc" recipients'); + $this->assertEmpty($this->Mail->getBccAddresses(), 'Bad "bcc" recipients'); + $this->assertEquals( + array('test+replyto' . $domain => array('test+replyto' . $domain, '')), + $this->Mail->getReplyToAddresses(), + 'Bad "reply-to" addresses'); + } + + /** + * Tests removal of duplicate recipients and reply-tos. + */ + public function testDuplicateIDNRemoved() + { + if (!$this->Mail->idnSupported()) { + $this->markTestSkipped('intl and/or mbstring extensions are not available'); + } + + $this->Mail->clearAllRecipients(); + $this->Mail->clearReplyTos(); + + $this->Mail->CharSet = 'utf-8'; + + $this->assertTrue($this->Mail->addAddress('test@françois.ch')); + $this->assertFalse($this->Mail->addAddress('test@françois.ch')); + $this->assertTrue($this->Mail->addAddress('test@FRANÇOIS.CH')); + $this->assertFalse($this->Mail->addAddress('test@FRANÇOIS.CH')); + $this->assertTrue($this->Mail->addAddress('test@xn--franois-xxa.ch')); + $this->assertFalse($this->Mail->addAddress('test@xn--franois-xxa.ch')); + $this->assertFalse($this->Mail->addAddress('test@XN--FRANOIS-XXA.CH')); + + $this->assertTrue($this->Mail->addReplyTo('test+replyto@françois.ch')); + $this->assertFalse($this->Mail->addReplyTo('test+replyto@françois.ch')); + $this->assertTrue($this->Mail->addReplyTo('test+replyto@FRANÇOIS.CH')); + $this->assertFalse($this->Mail->addReplyTo('test+replyto@FRANÇOIS.CH')); + $this->assertTrue($this->Mail->addReplyTo('test+replyto@xn--franois-xxa.ch')); + $this->assertFalse($this->Mail->addReplyTo('test+replyto@xn--franois-xxa.ch')); + $this->assertFalse($this->Mail->addReplyTo('test+replyto@XN--FRANOIS-XXA.CH')); + + $this->buildBody(); + $this->assertTrue($this->Mail->send(), $this->Mail->ErrorInfo); + + // There should be only one "To" address and one "Reply-To" address. + $this->assertEquals( + 1, + count($this->Mail->getToAddresses()), + 'Bad count of "to" recipients'); + $this->assertEquals( + 1, + count($this->Mail->getReplyToAddresses()), + 'Bad count of "reply-to" addresses'); + } /** * Use a fake POP3 server to test POP-before-SMTP auth. @@ -1715,7 +1998,7 @@ public function testPopBeforeSmtpGood() 'POP before SMTP failed' ); //Kill the fake server - shell_exec('kill -TERM '.escapeshellarg($pid)); + shell_exec('kill -TERM ' . escapeshellarg($pid)); sleep(2); } @@ -1736,7 +2019,7 @@ public function testPopBeforeSmtpBad() POP3::popBeforeSmtp('localhost', 1101, 10, 'user', 'xxx', $this->Mail->SMTPDebug), 'POP before SMTP should have failed' ); - shell_exec('kill -TERM '.escapeshellarg($pid)); + shell_exec('kill -TERM ' . escapeshellarg($pid)); sleep(2); } @@ -1765,38 +2048,11 @@ public function testSmtpConnect() 'SMTP connect with options failed' ); } - - /** - * Tests the Custom header getter - */ - public function testCustomHeaderGetter() - { - $this->Mail->addCustomHeader('foo', 'bar'); - $this->assertEquals(array(array('foo', 'bar')), $this->Mail->getCustomHeaders()); - - $this->Mail->addCustomHeader('foo', 'baz'); - $this->assertEquals(array( - array('foo', 'bar'), - array('foo', 'baz') - ), $this->Mail->getCustomHeaders()); - - $this->Mail->clearCustomHeaders(); - $this->assertEmpty($this->Mail->getCustomHeaders()); - - $this->Mail->addCustomHeader('yux'); - $this->assertEquals(array(array('yux')), $this->Mail->getCustomHeaders()); - - $this->Mail->addCustomHeader('Content-Type: application/json'); - $this->assertEquals(array( - array('yux'), - array('Content-Type', ' application/json') - ), $this->Mail->getCustomHeaders()); - } } /** * This is a sample form for setting appropriate test values through a browser - * These values can also be set using a file called testbootstrap.php (not in svn) in the same folder as this script + * These values can also be set using a file called testbootstrap.php (not in repo) in the same folder as this script * which is probably more useful if you run these tests a lot * * diff --git a/MultiMailer/PHPMailer-5.2.10/test/runfakepopserver.sh b/MultiMailer/PHPMailer/test/runfakepopserver.sh similarity index 82% rename from MultiMailer/PHPMailer-5.2.10/test/runfakepopserver.sh rename to MultiMailer/PHPMailer/test/runfakepopserver.sh index d6335b5..c325524 100644 --- a/MultiMailer/PHPMailer-5.2.10/test/runfakepopserver.sh +++ b/MultiMailer/PHPMailer/test/runfakepopserver.sh @@ -3,8 +3,8 @@ # Run the fake pop server from bash # Idea from http://blog.ale-re.net/2007/09/ipersimple-remote-shell-with-netcat.html # Defaults to port 1100 so it can be run by unpriv users and not clash with a real server -# Optionally, pass in in a port number as the first arg +# Optionally, pass in a port number as the first arg mkfifo fifo nc -l ${1:-1100} fifo -rm fifo \ No newline at end of file +rm fifo diff --git a/MultiMailer/PHPMailer-5.2.10/test/test_callback.php b/MultiMailer/PHPMailer/test/test_callback.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/test_callback.php rename to MultiMailer/PHPMailer/test/test_callback.php diff --git a/MultiMailer/PHPMailer-5.2.10/test/testbootstrap-dist.php b/MultiMailer/PHPMailer/test/testbootstrap-dist.php similarity index 100% rename from MultiMailer/PHPMailer-5.2.10/test/testbootstrap-dist.php rename to MultiMailer/PHPMailer/test/testbootstrap-dist.php diff --git a/MultiMailer/PHPMailer-5.2.10/travis.phpunit.xml.dist b/MultiMailer/PHPMailer/travis.phpunit.xml.dist similarity index 97% rename from MultiMailer/PHPMailer-5.2.10/travis.phpunit.xml.dist rename to MultiMailer/PHPMailer/travis.phpunit.xml.dist index 61a9ca5..8edfd44 100644 --- a/MultiMailer/PHPMailer-5.2.10/travis.phpunit.xml.dist +++ b/MultiMailer/PHPMailer/travis.phpunit.xml.dist @@ -10,7 +10,6 @@ convertWarningsToExceptions="true" colors="false" forceCoversAnnotation="false" - strict="false" processIsolation="false"> diff --git a/MultiMailer/ProxyPHPMailer.php b/MultiMailer/ProxyPHPMailer.php index fe9abc6..e519836 100644 --- a/MultiMailer/ProxyPHPMailer.php +++ b/MultiMailer/ProxyPHPMailer.php @@ -1,7 +1,7 @@ getMultiError(); } -You can chain the methods like: +You can chain the methods (except attachment() and attachments()) like: Yii::app()->MultiMailer->to('example@server.com', 'Recipient')->subject('Example email subject')->body('

Hello

This is test.
MultiMailer test.

')->send();