Fix wrong folder nesting
|
Before Width: | Height: | Size: 49 B After Width: | Height: | Size: 49 B |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
|
@ -1,148 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Examples using phpmailer</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<h2>Examples using phpmailer</h2>
|
||||
|
||||
<h3>1. Advanced Example</h3>
|
||||
<p>
|
||||
|
||||
This demonstrates sending out multiple email messages with binary attachments
|
||||
from a MySQL database with multipart/alternative support.<p>
|
||||
<table cellpadding="4" border="1" width="80%">
|
||||
<tr>
|
||||
<td bgcolor="#CCCCCC">
|
||||
<pre>
|
||||
require("class.phpmailer.php");
|
||||
|
||||
$mail = new phpmailer();
|
||||
|
||||
$mail->From = "list@example.com";
|
||||
$mail->FromName = "List manager";
|
||||
$mail->Host = "smtp1.example.com;smtp2.example.com";
|
||||
$mail->Mailer = "smtp";
|
||||
|
||||
@MYSQL_CONNECT("localhost","root","password");
|
||||
@mysql_select_db("my_company");
|
||||
$query = "SELECT full_name, email, photo FROM employee WHERE id=$id";
|
||||
$result = @MYSQL_QUERY($query);
|
||||
|
||||
while ($row = mysql_fetch_array ($result))
|
||||
{
|
||||
// HTML body
|
||||
$body = "Hello <font size=\"4\">" . $row["full_name"] . "</font>, <p>";
|
||||
$body .= "<i>Your</i> personal photograph to this message.<p>";
|
||||
$body .= "Sincerely, <br>";
|
||||
$body .= "phpmailer List manager";
|
||||
|
||||
// Plain text body (for mail clients that cannot read HTML)
|
||||
$text_body = "Hello " . $row["full_name"] . ", \n\n";
|
||||
$text_body .= "Your personal photograph to this message.\n\n";
|
||||
$text_body .= "Sincerely, \n";
|
||||
$text_body .= "phpmailer List manager";
|
||||
|
||||
$mail->Body = $body;
|
||||
$mail->AltBody = $text_body;
|
||||
$mail->AddAddress($row["email"], $row["full_name"]);
|
||||
$mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");
|
||||
|
||||
if(!$mail->Send())
|
||||
echo "There has been a mail error sending to " . $row["email"] . "<br>";
|
||||
|
||||
// Clear all addresses and attachments for next loop
|
||||
$mail->ClearAddresses();
|
||||
$mail->ClearAttachments();
|
||||
}
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
<h3>2. Extending phpmailer</h3>
|
||||
<p>
|
||||
|
||||
Extending classes with inheritance is one of the most
|
||||
powerful features of object-oriented
|
||||
programming. It allows you to make changes to the
|
||||
original class for your
|
||||
own personal use without hacking the original
|
||||
classes. Plus, it is very
|
||||
easy to do. I've provided an example:
|
||||
|
||||
<p>
|
||||
Here's a class that extends the phpmailer class and sets the defaults
|
||||
for the particular site:<br>
|
||||
PHP include file: <b>mail.inc.php</b>
|
||||
<p>
|
||||
|
||||
<table cellpadding="4" border="1" width="80%">
|
||||
<tr>
|
||||
<td bgcolor="#CCCCCC">
|
||||
<pre>
|
||||
require("class.phpmailer.php");
|
||||
|
||||
class my_phpmailer extends phpmailer {
|
||||
// Set default variables for all new objects
|
||||
var $From = "from@example.com";
|
||||
var $FromName = "Mailer";
|
||||
var $Host = "smtp1.example.com;smtp2.example.com";
|
||||
var $Mailer = "smtp"; // Alternative to IsSMTP()
|
||||
var $WordWrap = 75;
|
||||
|
||||
// Replace the default error_handler
|
||||
function error_handler($msg) {
|
||||
print("My Site Error");
|
||||
print("Description:");
|
||||
printf("%s", $msg);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Create an additional function
|
||||
function do_something($something) {
|
||||
// Place your new code here
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
Now here's a normal PHP page in the site, which will have all the defaults set
|
||||
above:<br>
|
||||
Normal PHP file: <b>mail_test.php</b>
|
||||
<p>
|
||||
|
||||
<table cellpadding="4" border="1" width="80%">
|
||||
<tr>
|
||||
<td bgcolor="#CCCCCC">
|
||||
<pre>
|
||||
require("mail.inc.php");
|
||||
|
||||
// Instantiate your new class
|
||||
$mail = new my_phpmailer;
|
||||
|
||||
// Now you only need to add the necessary stuff
|
||||
$mail->AddAddress("josh@example.com", "Josh Adams");
|
||||
$mail->Subject = "Here is the subject";
|
||||
$mail->Body = "This is the message body";
|
||||
$mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip"); // optional name
|
||||
|
||||
if(!$mail->Send())
|
||||
{
|
||||
echo "There was an error sending the message";
|
||||
exit;
|
||||
}
|
||||
|
||||
echo "Message was sent successfully";
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>PHPMailer FAQ</title>
|
||||
<style>
|
||||
body, p {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
div.width {
|
||||
width: 500px;
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
<center>
|
||||
<div class="width">
|
||||
<h2>PHPMailer FAQ</h2>
|
||||
<ul>
|
||||
|
||||
<li><b style="background-color: #FFFF00">Q:</b> <b>I'm using the SMTP mailer and I keep on getting a timeout message
|
||||
well before the X seconds I set it for. What gives?</b><br />
|
||||
<b style="background-color: #FFFF00">A:</b> PHP versions 4.0.4pl1 and earlier have a bug in which sockets timeout
|
||||
early. You can fix this by re-compiling PHP 4.0.4pl1 with this fix:
|
||||
<a href="timeoutfix.diff">timeoutfix.diff</a>. Otherwise you can wait for the new PHP release.<br /><br /></li>
|
||||
|
||||
<li><b style="background-color: #FFFF00">Q:</b> <b>I am concerned that using include files will take up too much
|
||||
processing time on my computer. How can I make it run faster?</b><br />
|
||||
<b style="background-color: #FFFF00">A:</b> PHP by itself is very fast. Much faster than ASP or JSP running on
|
||||
the same type of server. This is because it has very little overhead compared
|
||||
to its competitors and it pre-compiles all of
|
||||
its code before it runs each script (in PHP4). However, all of
|
||||
this compiling and re-compiling can take up a lot of valuable
|
||||
computer resources. However, there are programs out there that compile
|
||||
PHP code and store it in memory (or on mmaped files) to reduce the
|
||||
processing immensely. Two of these: <a href="http://apc.communityconnect.com">APC
|
||||
(Alternative PHP Cache)</a> and <a href="http://bwcache.bware.it/index.htm">Afterburner</a>
|
||||
(<a href="http://www.mm4.de/php4win/mod_php4_win32/">Win32 download</a>)
|
||||
are excellent free tools that do just this. If you have the money
|
||||
you might also try <a href="http://www.zend.com">Zend Cache</a>, it is
|
||||
even faster than the open source varieties. All of these tools make your
|
||||
scripts run faster while also reducing the load on your server. I have tried
|
||||
them myself and they are quite stable too.<br /><br /></li>
|
||||
|
||||
<li><b style="background-color: #FFFF00">Q:</b> <b>What mailer gives me the best performance?</b><br />
|
||||
<b style="background-color: #FFFF00">A:</b> On a single machine the <b>sendmail (or Qmail)</b> is fastest overall.
|
||||
Next fastest is mail() to give you the best performance. Both do not have the overhead of SMTP.
|
||||
If you have you have your mail server on a another machine then
|
||||
SMTP is your only option, but you do get the benefit of redundant mail servers.<br />
|
||||
If you are running a mailing list with thousands of names, the fastest mailers in order are: SMTP, sendmail (or Qmail), mail().<br /><br /></li>
|
||||
|
||||
<li><b style="background-color: #FFFF00">Q:</b> <b>When I try to attach a file with on my server I get a
|
||||
"Could not find {file} on filesystem error". Why is this?</b><br />
|
||||
<b style="background-color: #FFFF00">A:</b> If you are using a Unix machine this is probably because the user
|
||||
running your web server does not have read access to the directory in question. If you are using Windows,
|
||||
then the problem probably is that you have used single backslashes to denote directories (\).
|
||||
A single backslash has a special meaning to PHP so these are not
|
||||
valid. Instead use double backslashes ("\\") or a single forward
|
||||
slash ("/").<br /><br /></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
This is built for PHP Mailer 1.72 and was not tested with any previous version. It was developed under PHP 4.3.11 (E_ALL). It works under PHP 5 and 5.1 with E_ALL, but not in Strict mode due to var deprecation (but then neither does PHP Mailer either!). It follows the RFC 1939 standard explicitly and is fully commented.
|
||||
|
||||
With that noted, here is how to implement it:
|
||||
Install the class file
|
||||
|
||||
I didn't want to modify the PHP Mailer classes at all, so you will have to include/require this class along with the base one. It can sit quite happily in the phpmailer-1.72 directory:
|
||||
[geshi lang=php] require 'phpmailer-1.72/class.phpmailer.php'; require 'phpmailer-1.72/class.pop3.php'; [/geshi]
|
||||
When you need it, create your POP3 object
|
||||
|
||||
Right before I invoke PHP Mailer I activate the POP3 authorisation. POP3 before SMTP is a process whereby you login to your web hosts POP3 mail server BEFORE sending out any emails via SMTP. The POP3 logon 'verifies' your ability to send email by SMTP, which typically otherwise blocks you. On my web host (Pair Networks) a single POP3 logon is enough to 'verify' you for 90 minutes. Here is some sample PHP code that activates the POP3 logon and then sends an email via PHP Mailer:
|
||||
[geshi lang=php] Authorise('pop3.example.com', 110, 30, 'mailer', 'password', 1); $mail = new PHPMailer(); $mail->SMTPDebug = 2; $mail->IsSMTP(); $mail->IsHTML(false); $mail->Host = 'relay.example.com'; $mail->From = 'mailer@example.com'; $mail->FromName = 'Example Mailer'; $mail->Subject = 'My subject'; $mail->Body = 'Hello world'; $mail->AddAddress('rich@corephp.co.uk', 'Richard Davey'); if (!$mail->Send()) { echo $mail->ErrorInfo; } ?> [/geshi]
|
||||
|
||||
The PHP Mailer parts of this code should be obvious to anyone who has used PHP Mailer before. One thing to note - you almost certainly will not need to use SMTP Authentication *and* POP3 before SMTP together. The Authorisation method is a proxy method to all of the others within that class. There are Connect, Logon and Disconnect methods available, but I wrapped them in the single Authorisation one to make things easier.
|
||||
The Parameters
|
||||
|
||||
The Authorise parameters are as follows:
|
||||
[geshi lang=php]$pop->Authorise('pop3.example.com', 110, 30, 'mailer', 'password', 1);[/geshi]
|
||||
|
||||
1. pop3.example.com - The POP3 Mail Server Name (hostname or IP address)
|
||||
2. 110 - The POP3 Port on which to connect (default is usually 110, but check with your host)
|
||||
3. 30 - A connection time-out value (in seconds)
|
||||
4. mailer - The POP3 Username required to logon
|
||||
5. password - The POP3 Password required to logon
|
||||
6. 1 - The class debug level (0 = off, 1+ = debug output is echoed to the browser)
|
||||
|
||||
Final Comments + the Download
|
||||
|
||||
1) This class does not support APOP connections. This is only because I did not have an APOP server to test with, but if you'd like to see that added just contact me.
|
||||
|
||||
2) Opening and closing lots of POP3 connections can be quite a resource/network drain. If you need to send a whole batch of emails then just perform the authentication once at the start, and then loop through your mail sending script. Providing this process doesn't take longer than the verification period lasts on your POP3 server, you should be fine. With my host that period is 90 minutes, i.e. plenty of time.
|
||||
|
||||
3) If you have heavy requirements for this script (i.e. send a LOT of email on a frequent basis) then I would advise seeking out an alternative sending method (direct SMTP ideally). If this isn't possible then you could modify this class so the 'last authorised' date is recorded somewhere (MySQL, Flat file, etc) meaning you only open a new connection if the old one has expired, saving you precious overhead.
|
||||
|
||||
4) There are lots of other POP3 classes for PHP available. However most of them implement the full POP3 command set, where-as this one is purely for authentication, and much lighter as a result. However using any of the other POP3 classes to just logon to your server would have the same net result. At the end of the day, use whatever method you feel most comfortable with.
|
||||
Download
|
||||
|
||||
Here is the full class file plus my test script: POP_before_SMTP_PHPMailer.zip (4 KB) - Please note that it does not include PHPMailer itself.
|
||||
|
||||
My thanks to Chris Ryan for the inspiration (even if indirectly, via his SMTP class)
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<?php
|
||||
|
||||
// example on using PHPMailer with GMAIL
|
||||
|
||||
include("class.phpmailer.php");
|
||||
include("class.smtp.php"); // note, this is optional - gets called from main class if not already loaded
|
||||
|
||||
$mail = new PHPMailer();
|
||||
|
||||
$body = $mail->getFile('contents.html');
|
||||
$body = eregi_replace("[\]",'',$body);
|
||||
|
||||
$mail->IsSMTP();
|
||||
$mail->SMTPAuth = true; // enable SMTP authentication
|
||||
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
|
||||
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
|
||||
$mail->Port = 465; // set the SMTP port
|
||||
|
||||
$mail->Username = "yourname@gmail.com"; // GMAIL username
|
||||
$mail->Password = "password"; // GMAIL password
|
||||
|
||||
$mail->From = "replyto@yourdomain.com";
|
||||
$mail->FromName = "Webmaster";
|
||||
$mail->Subject = "This is the subject";
|
||||
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body
|
||||
$mail->WordWrap = 50; // set word wrap
|
||||
|
||||
$mail->MsgHTML($body);
|
||||
|
||||
$mail->AddReplyTo("replyto@yourdomain.com","Webmaster");
|
||||
|
||||
$mail->AddAttachment("/path/to/file.zip"); // attachment
|
||||
$mail->AddAttachment("/path/to/image.jpg", "new.jpg"); // attachment
|
||||
|
||||
$mail->AddAddress("username@domain.com","First Last");
|
||||
|
||||
$mail->IsHTML(true); // send as HTML
|
||||
|
||||
if(!$mail->Send()) {
|
||||
echo "Mailer Error: " . $mail->ErrorInfo;
|
||||
} else {
|
||||
echo "Message has been sent";
|
||||
}
|
||||
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |