-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated PHPMailer to 5.2.8, switched to PHPMailer autoloader, new smt…
…p helper function, updated documentation and examples, removed unnecessary getters for addresses
- Loading branch information
Showing
14 changed files
with
5,368 additions
and
4,527 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<?php | ||
/** | ||
* PHPMailer SPL autoloader. | ||
* PHP Version 5 | ||
* @package PHPMailer | ||
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project | ||
* @author Marcus Bointon (Synchro/coolbru) <[email protected]> | ||
* @author Jim Jagielski (jimjag) <[email protected]> | ||
* @author Andy Prevost (codeworxtech) <[email protected]> | ||
* @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. | ||
*/ | ||
|
||
/** | ||
* PHPMailer SPL autoloader. | ||
* @param string $classname The name of the class to load | ||
*/ | ||
function PHPMailerAutoload($classname) | ||
{ | ||
//Can't use __DIR__ as it's only in PHP 5.3+ | ||
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php'; | ||
if (is_readable($filename)) { | ||
require $filename; | ||
} | ||
} | ||
|
||
if (version_compare(PHP_VERSION, '5.1.2', '>=')) { | ||
//SPL autoloading was introduced in PHP 5.1.2 | ||
if (version_compare(PHP_VERSION, '5.3.0', '>=')) { | ||
spl_autoload_register('PHPMailerAutoload', true, true); | ||
} else { | ||
spl_autoload_register('PHPMailerAutoload'); | ||
} | ||
} else { | ||
/** | ||
* Fall back to traditional autoload for old PHP versions | ||
* @param string $classname The name of the class to load | ||
*/ | ||
function __autoload($classname) | ||
{ | ||
PHPMailerAutoload($classname); | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,10 @@ | ||
![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png) | ||
|
||
# PHPMailer - A full-featured email creation and transfer class for PHP | ||
|
||
Build status: [![Build Status](https://travis-ci.org/Synchro/PHPMailer.png)](https://travis-ci.org/Synchro/PHPMailer) | ||
Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) | ||
[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/quality-score.png?s=3758e21d279becdf847a557a56a3ed16dfec9d5d)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) | ||
[![Code Coverage](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/coverage.png?s=3fe6ca5fe8cd2cdf96285756e42932f7ca256962)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) | ||
|
||
## Class Features | ||
|
||
|
@@ -9,9 +13,10 @@ Build status: [![Build Status](https://travis-ci.org/Synchro/PHPMailer.png)](htt | |
- 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 8bit, base64, binary, and quoted-printable encoding | ||
- SMTP authentication with LOGIN, PLAIN, NTLM and CRAM-MD5 mechanisms | ||
- 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 | ||
- Native language support | ||
- DKIM and S/MIME signing support | ||
- Compatible with PHP 5.0 and later | ||
- Much more! | ||
|
||
|
@@ -29,73 +34,82 @@ The PHP mail() function usually sends via a local mail server, typically fronted | |
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 | ||
software availability and distribution. | ||
|
||
## Installation | ||
## Installation & loading | ||
|
||
PHPMailer is available via [Composer/Packagist](https://packagist.org/packages/phpmailer/phpmailer). Alternatively, just 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. | ||
|
||
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. | ||
|
||
### 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. 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, advanced HTML-to-text conversion and ics generation. | ||
|
||
## A Simple Example | ||
|
||
```php | ||
<?php | ||
require 'class.phpmailer.php'; | ||
require 'PHPMailerAutoload.php'; | ||
|
||
$mail = new PHPMailer; | ||
|
||
$mail->IsSMTP(); // Set mailer to use SMTP | ||
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server | ||
$mail->isSMTP(); // Set mailer to use SMTP | ||
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers | ||
$mail->SMTPAuth = true; // Enable SMTP authentication | ||
$mail->Username = 'jswan'; // SMTP username | ||
$mail->Username = '[email protected]'; // SMTP username | ||
$mail->Password = 'secret'; // SMTP password | ||
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted | ||
|
||
$mail->From = '[email protected]'; | ||
$mail->FromName = 'Mailer'; | ||
$mail->AddAddress('josh@example.net', 'Josh Adams'); // Add a recipient | ||
$mail->AddAddress('[email protected]'); // Name is optional | ||
$mail->AddReplyTo('[email protected]', 'Information'); | ||
$mail->AddCC('[email protected]'); | ||
$mail->AddBCC('[email protected]'); | ||
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient | ||
$mail->addAddress('[email protected]'); // Name is optional | ||
$mail->addReplyTo('[email protected]', 'Information'); | ||
$mail->addCC('[email protected]'); | ||
$mail->addBCC('[email protected]'); | ||
|
||
$mail->WordWrap = 50; // Set word wrap to 50 characters | ||
$mail->AddAttachment('/var/tmp/file.tar.gz'); // Add attachments | ||
$mail->AddAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name | ||
$mail->IsHTML(true); // Set email format to HTML | ||
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments | ||
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name | ||
$mail->isHTML(true); // Set email format to HTML | ||
|
||
$mail->Subject = 'Here is the subject'; | ||
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; | ||
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; | ||
|
||
if(!$mail->Send()) { | ||
echo 'Message could not be sent.'; | ||
echo 'Mailer Error: ' . $mail->ErrorInfo; | ||
exit; | ||
if(!$mail->send()) { | ||
echo 'Message could not be sent.'; | ||
echo 'Mailer Error: ' . $mail->ErrorInfo; | ||
} else { | ||
echo 'Message has been sent'; | ||
} | ||
|
||
echo 'Message has been sent'; | ||
``` | ||
|
||
You'll find plenty more to play with in the `examples` folder. | ||
You'll find plenty more to play with in the [examples](examples/) folder. | ||
|
||
That's it. You should now be ready to use PHPMailer! | ||
|
||
## Localization | ||
PHPMailer defaults to English, but in the `languages` folder you'll find numerous translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this: | ||
PHPMailer defaults to English, but in the [language](language/) folder you'll find numerous (39 at the time of writing) translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this: | ||
|
||
```php | ||
// To load the French version | ||
$mail->SetLanguage('fr', '/optional/path/to/language/directory/'); | ||
$mail->setLanguage('fr', '/optional/path/to/language/directory/'); | ||
``` | ||
|
||
We welcome corrections and new languages - if you're looking for corrections to do, run the [phpmailerLangTest.php](test/phpmailerLangTest.php) script in the tests folder and it will show any missing translations. | ||
|
||
## Documentation | ||
|
||
You'll find some basic user-level docs in the docs folder, and you can generate complete API-level documentation using the `generatedocs.sh` shell script in the docs folder, though you'll need to install [PHPDocumentor](http://www.phpdoc.org) first. | ||
Generated documentation is [available online](http://phpmailer.github.io/PHPMailer/). | ||
|
||
You'll find some basic user-level docs in the [docs](docs/) folder, and you can generate complete API-level documentation using the [generatedocs.sh](docs/generatedocs.sh) shell script in the docs folder, though you'll need to install [PHPDocumentor](http://www.phpdoc.org) first. You may find [the unit tests](test/phpmailerTest.php) a good source of how to do various operations such as encryption. | ||
|
||
## Tests | ||
|
||
You'll find a PHPUnit test script in the `test` folder. | ||
There is a PHPUnit test script in the [test](test/) folder. | ||
|
||
Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.png)](https://travis-ci.org/PHPMailer/PHPMailer) | ||
Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) | ||
|
||
If this isn't passing, is there something you can do to help? | ||
|
||
|
@@ -107,13 +121,13 @@ 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 | ||
`git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git` | ||
|
||
Please *don't* use the SourceForge or Google Code projects any more. | ||
|
||
## Changelog | ||
|
||
See changelog.md | ||
See [changelog](changelog.md). | ||
|
||
## History | ||
- PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](http://sourceforge.net/projects/phpmailer/). | ||
|
@@ -128,7 +142,7 @@ See changelog.md | |
- Test suite. | ||
- Continuous integration with Travis-CI. | ||
- Composer support. | ||
- Rolling releases. | ||
- Public development. | ||
- Additional languages and language strings. | ||
- CRAM-MD5 authentication support. | ||
- Preserves full repo history of authors, commits and branches from the original SourceForge project. |
Oops, something went wrong.