Project

General

Profile

« Previous | Next » 

Revision 533

Added by doc almost 17 years ago

updated PHPMailer framework to version 2.0.0 (/include/phpmailer)

View differences:

trunk/CHANGELOG
12 12

  
13 13
------------------------------------- 2.7.0 -------------------------------------
14 14
13-Jan-2008 Christian Sommer
15
!	updated PHPMailer framework to version 2.0.0 (/include/phpmailer)
16

  
17
13-Jan-2008 Christian Sommer
15 18
#	this bugfix closes ticket 412 (direct call of admin/settings/save.php clears database)
16 19

  
17 20
13-Jan-2008 Christian Sommer
trunk/wb/include/phpmailer/language/phpmailer.lang-da.php
1
<?php
2
/**
3
 * PHPMailer language file.  
4
 * Danish Version
5
 * Author: Mikael Stokkebro <info@stokkebro.dk>
6
 */
7

  
8
$PHPMAILER_LANG = array();
9

  
10
$PHPMAILER_LANG["provide_address"] = 'Du skal indtaste mindst en ' .
11
                                     'modtagers emailadresse.';
12
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer underst?ttes ikke.';
13
$PHPMAILER_LANG["execute"] = 'Kunne ikke k?re: ';
14
$PHPMAILER_LANG["instantiate"] = 'Kunne ikke initialisere email funktionen.';
15
$PHPMAILER_LANG["authenticate"] = 'SMTP fejl: Kunne ikke logge p?.';
16
$PHPMAILER_LANG["from_failed"] = 'F?lgende afsenderadresse er forkert: ';
17
$PHPMAILER_LANG["recipients_failed"] = 'SMTP fejl: F?lgende' .
18
                                       'modtagere er forkerte: ';
19
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP fejl: Data kunne ikke accepteres.';
20
$PHPMAILER_LANG["connect_host"] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
21
$PHPMAILER_LANG["file_access"] = 'Ingen adgang til fil: ';
22
$PHPMAILER_LANG["file_open"] = 'Fil fejl: Kunne ikke ?bne filen: ';
23
$PHPMAILER_LANG["encoding"] = 'Ukendt encode-format: ';
24
?>
25 0

  
trunk/wb/include/phpmailer/language/phpmailer.lang-dk.php
1
<?php
2
/**
3
 * PHPMailer language file.  
4
 * Danish Version
5
 * Author: Mikael Stokkebro <info@stokkebro.dk>
6
 */
7

  
8
$PHPMAILER_LANG = array();
9

  
10
$PHPMAILER_LANG["provide_address"] = 'Du skal indtaste mindst en ' .
11
                                     'modtagers emailadresse.';
12
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer underst?ttes ikke.';
13
$PHPMAILER_LANG["execute"] = 'Kunne ikke k?re: ';
14
$PHPMAILER_LANG["instantiate"] = 'Kunne ikke initialisere email funktionen.';
15
$PHPMAILER_LANG["authenticate"] = 'SMTP fejl: Kunne ikke logge p?.';
16
$PHPMAILER_LANG["from_failed"] = 'F?lgende afsenderadresse er forkert: ';
17
$PHPMAILER_LANG["recipients_failed"] = 'SMTP fejl: F?lgende' .
18
                                       'modtagere er forkerte: ';
19
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP fejl: Data kunne ikke accepteres.';
20
$PHPMAILER_LANG["connect_host"] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
21
$PHPMAILER_LANG["file_access"] = 'Ingen adgang til fil: ';
22
$PHPMAILER_LANG["file_open"] = 'Fil fejl: Kunne ikke ?bne filen: ';
23
$PHPMAILER_LANG["encoding"] = 'Ukendt encode-format: ';
24
?>
trunk/wb/include/phpmailer/language/phpmailer.lang-et.php
1
<?php
2
/**
3
 * PHPMailer language file.  
4
 * Estonian Version
5
 * By Indrek P&auml;ri
6
 */
7

  
8
$PHPMAILER_LANG = array();
9

  
10
$PHPMAILER_LANG["provide_address"] = 'Te peate m&auml;&auml;rama v&auml;hemalt &uuml;he saaja e-posti aadressi.';
11
$PHPMAILER_LANG["mailer_not_supported"] = ' maileri tugi puudub.';
12
$PHPMAILER_LANG["execute"] = 'Tegevus eba&otilde;nnestus: ';
13
$PHPMAILER_LANG["instantiate"] = 'mail funktiooni k&auml;ivitamine eba&otilde;nnestus.';
14
$PHPMAILER_LANG["authenticate"] = 'SMTP Viga: Autoriseerimise viga.';
15
$PHPMAILER_LANG["from_failed"] = 'J&auml;rgnev saatja e-posti aadress on vigane: ';
16
$PHPMAILER_LANG["recipients_failed"] = 'SMTP Viga: J&auml;rgnevate saajate e-posti aadressid on vigased: ';
17
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Viga: Vigased andmed.';
18
$PHPMAILER_LANG["connect_host"] = 'SMTP Viga: Ei &otilde;nnestunud luua &uuml;hendust SMTP serveriga.';
19
$PHPMAILER_LANG["file_access"] = 'Pole piisavalt &otilde;iguseid j&auml;rgneva faili avamiseks: ';
20
$PHPMAILER_LANG["file_open"] = 'Faili Viga: Faili avamine eba&otilde;nnestus: ';
21
$PHPMAILER_LANG["encoding"] = 'Tundmatu Unknown kodeering: ';
22
?>
trunk/wb/include/phpmailer/language/phpmailer.lang-ru.php
1
<?php
-
2
/**
-
3
 * PHPMailer language file.  
-
4
 * Russian Version
-
5
 */
-
6
-
7
$PHPMAILER_LANG = array();
-
8
-
9
$PHPMAILER_LANG["provide_address"] = '?????????? ??????? ??????? ???? Email' .
-
10
                                     '??????????.';
-
11
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer ?? ??????????????.';
-
12
$PHPMAILER_LANG["execute"] = '?????????? ????????? ??? ???????: ';
-
13
$PHPMAILER_LANG["instantiate"] = '????????? ?????? ??? ????????????? Mail ???????.';
-
14
$PHPMAILER_LANG["authenticate"] = 'SMTP ??????: ?????? ???????????.';
-
15
$PHPMAILER_LANG["from_failed"] = '???????? ????? ???????????: ';
-
16
$PHPMAILER_LANG["recipients_failed"] = 'SMTP ??????: ????????? ' .
-
17
                                       '?????? ??????????? ???????: ';
-
18
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP ??????: ?????? ?? ???? ???????.';
-
19
$PHPMAILER_LANG["connect_host"] = 'SMTP ??????: SMTP-Host ??????????.';
-
20
$PHPMAILER_LANG["file_access"] = '? ??????? ? ?????????? ????? ???? ????????: ';
-
21
$PHPMAILER_LANG["file_open"] = '?? ???? ??????? ????: ';
-
22
$PHPMAILER_LANG["encoding"] = '??????????? ?????? ?????????: ';
-
23
?>
-
1
<?php
2
/**
3
 * PHPMailer language file.
4
 * Russian Version by Alexey Chumakov <alex@chumakov.ru>
5
 */
6

  
7
$PHPMAILER_LANG = array();
8
$PHPMAILER_LANG["provide_address"] = '??????????, ??????? ???? ?? ???? ????? e-mail ' .
9
                                     '??????????.';
10
$PHPMAILER_LANG["mailer_not_supported"] = ' - ???????? ?????? ?? ??????????????.';
11
$PHPMAILER_LANG["execute"] = '?????????? ????????? ???????: ';
12
$PHPMAILER_LANG["instantiate"] = '?????????? ????????? ??????? mail.';
13
$PHPMAILER_LANG["authenticate"] = '?????? SMTP: ?????? ???????????.';
14
$PHPMAILER_LANG["from_failed"] = '???????? ????? ???????????: ';
15
$PHPMAILER_LANG["recipients_failed"] = '?????? SMTP: ???????? ?? ????????? ' .
16
                                       '??????? ??????????? ?? ???????: ';
17
$PHPMAILER_LANG["data_not_accepted"] = '?????? SMTP: ?????? ?? ???????.';
18
$PHPMAILER_LANG["connect_host"] = '?????? SMTP: ?? ??????? ???????????? ? ??????? SMTP.';
19
$PHPMAILER_LANG["file_access"] = '??? ??????? ? ?????: ';
20
$PHPMAILER_LANG["file_open"] = '???????? ??????: ?? ??????? ??????? ????: ';
21
$PHPMAILER_LANG["encoding"] = '??????????? ??? ?????????: ';
22
?>
23

  
trunk/wb/include/phpmailer/ChangeLog.txt
1
ChangeLog
2

  
3
Version 2.0.0 (Sun, Dec 02 2007)
4
* implemented updated EncodeQP (thanks to coolbru, aka Marcus Bointon)
5
* finished all testing, all known bugs corrected, enhancements tested
6
- note: designed for PHP4, but will work with PHP5 (not compatible with
7
  E_STRICT) ... full PHP5 version of PHPMailer released separately. 
8
  PHP5 version will NOT work with PHP4.
9

  
10
Version 2.0.0 rc2 (Fri, Nov 16 2007), interim release
11
* implements new property to control VERP in class.smtp.php
12
  example (requires instantiating class.smtp.php):
13
  $mail->do_verp = true;
14
* POP-before-SMTP functionality included, thanks to Richard Davey
15
  (see class.pop3.php & pop3_before_smtp_test.php for examples)
16
* included example showing how to use PHPMailer with GMAIL
17
* fixed the missing Cc in SendMail() and Mail()
18

  
19
******************
20
A note on sending bulk emails:
21

  
22
If the email you are sending is not personalized, consider using the 
23
"undisclosed-recipient:;" strategy. That is, put all of your recipients
24
in the Bcc field and set the To field to "undisclosed-recipients:;". 
25
It's a lot faster (only one send) and saves quite a bit on resources.
26
Contrary to some opinions, this will not get you listed in spam engines -
27
it's a legitimate way for you to send emails.
28

  
29
A partial example for use with PHPMailer:
30

  
31
$mail->AddAddress("undisclosed-recipients:;");
32
$mail->AddBCC("email1@anydomain.com,email2@anyotherdomain.com,email3@anyalternatedomain.com");
33

  
34
Many email service providers restrict the number of emails that can be sent
35
in any given time period. Often that is between 50 - 60 emails maximum
36
per hour or per send session.
37

  
38
If that's the case, then break up your Bcc lists into chunks that are one
39
less than your limit, and put a pause in your script.
40
*******************
41

  
42
Version 2.0.0 rc1 (Thu, Nov 08 2007), interim release
43
* dramatically simplified using inline graphics ... it's fully automated and requires no user input
44
* added automatic document type detection for attachments and pictures
45
* added MsgHTML() function to replace Body tag for HTML emails
46
* fixed the SendMail security issues (input validation vulnerability)
47
* enhanced the AddAddresses functionality so that the "Name" portion is used in the email address
48
* removed the need to use the AltBody method (set from the HTML, or default text used)
49
* set the PHP Mail() function as the default (still support SendMail, SMTP Mail)
50
* removed the need to set the IsHTML property (set automatically)
51
* added Estonian language file by Indrek P&auml;ri
52
* added header injection patch
53
* added "set" method to permit users to create their own pseudo-properties like 'X-Headers', etc.
54
  example of use:
55
  $mail->set('X-Priority', '3');
56
  $mail->set('X-MSMail-Priority', 'Normal');
57
* fixed warning message in SMTP get_lines method
58
* added TLS/SSL SMTP support
59
  example of use:
60
  $mail = new PHPMailer();
61
	$mail->Mailer = "smtp";
62
	$mail->Host = "smtp.example.com";
63
	$mail->SMTPSecure   = "tls"; // option
64
	//$mail->SMTPSecure   = "ssl";  // option
65
	...
66
  $mail->Send();
67
* PHPMailer has been tested with PHP4 (4.4.7) and PHP5 (5.2.7)
68
* Works with PHP installed as a module or as CGI-PHP
69
- NOTE: will NOT work with PHP5 in E_STRICT error mode
70

  
71
Version 1.73 (Sun, Jun 10 2005)
72
* Fixed denial of service bug: http://www.cybsec.com/vuln/PHPMailer-DOS.pdf
73
* Now has a total of 20 translations
74
* Fixed alt attachments bug: http://tinyurl.com/98u9k
75

  
76
Version 1.72 (Wed, May 25 2004)
77
* Added Dutch, Swedish, Czech, Norwegian, and Turkish translations.
78
* Received: Removed this method because spam filter programs like 
79
SpamAssassin reject this header.
80
* Fixed error count bug.
81
* SetLanguage default is now "language/".
82
* Fixed magic_quotes_runtime bug.
83

  
84
Version 1.71 (Tue, Jul 28 2003)
85
* Made several speed enhancements
86
* Added German and Italian translation files
87
* Fixed HELO/AUTH bugs on keep-alive connects
88
* Now provides an error message if language file does not load
89
* Fixed attachment EOL bug
90
* Updated some unclear documentation
91
* Added additional tests and improved others
92

  
93
Version 1.70 (Mon, Jun 20 2003)
94
* Added SMTP keep-alive support
95
* Added IsError method for error detection
96
* Added error message translation support (SetLanguage)
97
* Refactored many methods to increase library performance
98
* Hello now sends the newer EHLO message before HELO as per RFC 2821
99
* Removed the boundary class and replaced it with GetBoundary
100
* Removed queue support methods
101
* New $Hostname variable
102
* New Message-ID header
103
* Received header reformat
104
* Helo variable default changed to $Hostname
105
* Removed extra spaces in Content-Type definition (#667182)
106
* Return-Path should be set to Sender when set
107
* Adds Q or B encoding to headers when necessary
108
* quoted-encoding should now encode NULs \000
109
* Fixed encoding of body/AltBody (#553370)
110
* Adds "To: undisclosed-recipients:;" when all recipients are hidden (BCC)
111
* Multiple bug fixes
112

  
113
Version 1.65 (Fri, Aug 09 2002)
114
* Fixed non-visible attachment bug (#585097) for Outlook
115
* SMTP connections are now closed after each transaction
116
* Fixed SMTP::Expand return value
117
* Converted SMTP class documentation to phpDocumentor format
118

  
119
Version 1.62 (Wed, Jun 26 2002)
120
* Fixed multi-attach bug
121
* Set proper word wrapping
122
* Reduced memory use with attachments
123
* Added more debugging
124
* Changed documentation to phpDocumentor format
125

  
126
Version 1.60 (Sat, Mar 30 2002)
127
* Sendmail pipe and address patch (Christian Holtje)
128
* Added embedded image and read confirmation support (A. Ognio)
129
* Added unit tests
130
* Added SMTP timeout support (*nix only)
131
* Added possibly temporary PluginDir variable for SMTP class
132
* Added LE message line ending variable
133
* Refactored boundary and attachment code
134
* Eliminated SMTP class warnings
135
* Added SendToQueue method for future queuing support
136

  
137
Version 1.54 (Wed, Dec 19 2001)
138
* Add some queuing support code
139
* Fixed a pesky multi/alt bug
140
* Messages are no longer forced to have "To" addresses
141

  
142
Version 1.50 (Thu, Nov 08 2001)
143
* Fix extra lines when not using SMTP mailer
144
* Set WordWrap variable to int with a zero default
145

  
146
Version 1.47 (Tue, Oct 16 2001)
147
* Fixed Received header code format
148
* Fixed AltBody order error
149
* Fixed alternate port warning
150

  
151
Version 1.45 (Tue, Sep 25 2001)
152
* Added enhanced SMTP debug support
153
* Added support for multiple ports on SMTP
154
* Added Received header for tracing
155
* Fixed AddStringAttachment encoding
156
* Fixed possible header name quote bug
157
* Fixed wordwrap() trim bug
158
* Couple other small bug fixes
159

  
160
Version 1.41 (Wed, Aug 22 2001)
161
* Fixed AltBody bug w/o attachments
162
* Fixed rfc_date() for certain mail servers
163

  
164
Version 1.40 (Sun, Aug 12 2001)
165
* Added multipart/alternative support (AltBody)
166
* Documentation update
167
* Fixed bug in Mercury MTA
168

  
169
Version 1.29 (Fri, Aug 03 2001)
170
* Added AddStringAttachment() method
171
* Added SMTP authentication support
172

  
173
Version 1.28 (Mon, Jul 30 2001)
174
* Fixed a typo in SMTP class
175
* Fixed header issue with Imail (win32) SMTP server
176
* Made fopen() calls for attachments use "rb" to fix win32 error
177

  
178
Version 1.25 (Mon, Jul 02 2001)
179
* Added RFC 822 date fix (Patrice)
180
* Added improved error handling by adding a $ErrorInfo variable
181
* Removed MailerDebug variable (obsolete with new error handler)
182

  
183
Version 1.20 (Mon, Jun 25 2001)
184
* Added quoted-printable encoding (Patrice)
185
* Set Version as public and removed PrintVersion()
186
* Changed phpdoc to only display public variables and methods
187

  
188
Version 1.19 (Thu, Jun 21 2001)
189
* Fixed MS Mail header bug
190
* Added fix for Bcc problem with mail(). *Does not work on Win32*
191
  (See PHP bug report: http://www.php.net/bugs.php?id=11616)
192
* mail() no longer passes a fifth parameter when not needed
193

  
194
Version 1.15 (Fri, Jun 15 2001)
195
[Note: these changes contributed by Patrice Fournier]
196
* Changed all remaining \n to \r\n
197
* Bcc: header no longer writen to message except
198
when sent directly to sendmail
199
* Added a small message to non-MIME compliant mail reader
200
* Added Sender variable to change the Sender email
201
used in -f for sendmail/mail and in 'MAIL FROM' for smtp mode
202
* Changed boundary setting to a place it will be set only once
203
* Removed transfer encoding for whole message when using multipart
204
* Message body now uses Encoding in multipart messages
205
* Can set encoding and type to attachments 7bit, 8bit
206
and binary attachment are sent as is, base64 are encoded
207
* Can set Encoding to base64 to send 8 bits body
208
through 7 bits servers
209

  
210
Version 1.10 (Tue, Jun 12 2001)
211
* Fixed win32 mail header bug (printed out headers in message body)
212

  
213
Version 1.09 (Fri, Jun 08 2001)
214
* Changed date header to work with Netscape mail programs
215
* Altered phpdoc documentation
216

  
217
Version 1.08 (Tue, Jun 05 2001)
218
* Added enhanced error-checking
219
* Added phpdoc documentation to source
220

  
221
Version 1.06 (Fri, Jun 01 2001)
222
* Added optional name for file attachments
223

  
224
Version 1.05 (Tue, May 29 2001)
225
* Code cleanup
226
* Eliminated sendmail header warning message
227
* Fixed possible SMTP error
228

  
229
Version 1.03 (Thu, May 24 2001)
230
* Fixed problem where qmail sends out duplicate messages
231

  
232
Version 1.02 (Wed, May 23 2001)
233
* Added multiple recipient and attachment Clear* methods
234
* Added Sendmail public variable
235
* Fixed problem with loading SMTP library multiple times
236

  
237
Version 0.98 (Tue, May 22 2001)
238
* Fixed problem with redundant mail hosts sending out multiple messages
239
* Added additional error handler code
240
* Added AddCustomHeader() function
241
* Added support for Microsoft mail client headers (affects priority)
242
* Fixed small bug with Mailer variable
243
* Added PrintVersion() function
244

  
245
Version 0.92 (Tue, May 15 2001)
246
* Changed file names to class.phpmailer.php and class.smtp.php to match
247
  current PHP class trend.
248
* Fixed problem where body not being printed when a message is attached
249
* Several small bug fixes
250

  
251
Version 0.90 (Tue, April 17 2001)
252
* Intial public release
trunk/wb/include/phpmailer/class.phpmailer.php
1 1
<?php
2
////////////////////////////////////////////////////
3
// PHPMailer - PHP email class
4
//
5
// Class for sending email using either
6
// sendmail, PHP mail(), or SMTP.  Methods are
7
// based upon the standard AspEmail(tm) classes.
8
//
9
// Copyright (C) 2001 - 2003  Brent R. Matzelle
10
//
11
// License: LGPL, see LICENSE
12
////////////////////////////////////////////////////
2
/*~ class.phpmailer.php
3
.---------------------------------------------------------------------------.
4
|  Software: PHPMailer - PHP email class                                    |
5
|   Version: 2.0.0 rc3                                                      |
6
|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
7
|      Info: http://phpmailer.sourceforge.net                               |
8
|   Support: http://sourceforge.net/projects/phpmailer/                     |
9
| ------------------------------------------------------------------------- |
10
|    Author: Andy Prevost (project admininistrator)                         |
11
|    Author: Brent R. Matzelle (original founder)                           |
12
| Copyright (c) 2004-2007, Andy Prevost. All Rights Reserved.               |
13
| Copyright (c) 2001-2003, Brent R. Matzelle                                |
14
| ------------------------------------------------------------------------- |
15
|   License: Distributed under the Lesser General Public License (LGPL)     |
16
|            http://www.gnu.org/copyleft/lesser.html                        |
17
| This program is distributed in the hope that it will be useful - WITHOUT  |
18
| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
19
| FITNESS FOR A PARTICULAR PURPOSE.                                         |
20
| ------------------------------------------------------------------------- |
21
| We offer a number of paid services (www.codeworxtech.com):                |
22
| - Web Hosting on highly optimized fast and secure servers                 |
23
| - Technology Consulting                                                   |
24
| - Oursourcing (highly qualified programmers and graphic designers)        |
25
'---------------------------------------------------------------------------'
13 26

  
14 27
/**
15 28
 * PHPMailer - PHP email transport class
16 29
 * @package PHPMailer
17
 * @author Brent R. Matzelle
18
 * @copyright 2001 - 2003 Brent R. Matzelle
30
 * @author Andy Prevost
31
 * @copyright 2004 - 2007 Andy Prevost
19 32
 */
20
class PHPMailer
21
{
22
    /////////////////////////////////////////////////
23
    // PUBLIC VARIABLES
24
    /////////////////////////////////////////////////
25 33

  
26
    /**
27
     * Email priority (1 = High, 3 = Normal, 5 = low).
28
     * @var int
29
     */
30
    var $Priority          = 3;
34
class PHPMailer {
31 35

  
32
    /**
33
     * Sets the CharSet of the message.
34
     * @var string
35
     */
36
    var $CharSet           = "iso-8859-1";
36
  /////////////////////////////////////////////////
37
  // PROPERTIES, PUBLIC
38
  /////////////////////////////////////////////////
37 39

  
38
    /**
39
     * Sets the Content-type of the message.
40
     * @var string
41
     */
42
    var $ContentType        = "text/plain";
40
  /**
41
   * Email priority (1 = High, 3 = Normal, 5 = low).
42
   * @var int
43
   */
44
  var $Priority          = 3;
43 45

  
44
    /**
45
     * Sets the Encoding of the message. Options for this are "8bit",
46
     * "7bit", "binary", "base64", and "quoted-printable".
47
     * @var string
48
     */
49
    var $Encoding          = "8bit";
46
  /**
47
   * Sets the CharSet of the message.
48
   * @var string
49
   */
50
  var $CharSet           = 'iso-8859-1';
50 51

  
51
    /**
52
     * Holds the most recent mailer error message.
53
     * @var string
54
     */
55
    var $ErrorInfo         = "";
52
  /**
53
   * Sets the Content-type of the message.
54
   * @var string
55
   */
56
  var $ContentType        = 'text/plain';
56 57

  
57
    /**
58
     * Sets the From email address for the message.
59
     * @var string
60
     */
61
    var $From               = "root@localhost";
58
  /**
59
   * Sets the Encoding of the message. Options for this are "8bit",
60
   * "7bit", "binary", "base64", and "quoted-printable".
61
   * @var string
62
   */
63
  var $Encoding          = '8bit';
62 64

  
63
    /**
64
     * Sets the From name of the message.
65
     * @var string
66
     */
67
    var $FromName           = "Root User";
65
  /**
66
   * Holds the most recent mailer error message.
67
   * @var string
68
   */
69
  var $ErrorInfo         = '';
68 70

  
69
    /**
70
     * Sets the Sender email (Return-Path) of the message.  If not empty,
71
     * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
72
     * @var string
73
     */
74
    var $Sender            = "";
71
  /**
72
   * Sets the From email address for the message.
73
   * @var string
74
   */
75
  var $From              = 'root@localhost';
75 76

  
76
    /**
77
     * Sets the Subject of the message.
78
     * @var string
79
     */
80
    var $Subject           = "";
77
  /**
78
   * Sets the From name of the message.
79
   * @var string
80
   */
81
  var $FromName          = 'Root User';
81 82

  
82
    /**
83
     * Sets the Body of the message.  This can be either an HTML or text body.
84
     * If HTML then run IsHTML(true).
85
     * @var string
86
     */
87
    var $Body               = "";
83
  /**
84
   * Sets the Sender email (Return-Path) of the message.  If not empty,
85
   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
86
   * @var string
87
   */
88
  var $Sender            = '';
88 89

  
89
    /**
90
     * Sets the text-only body of the message.  This automatically sets the
91
     * email to multipart/alternative.  This body can be read by mail
92
     * clients that do not have HTML email capability such as mutt. Clients
93
     * that can read HTML will view the normal Body.
94
     * @var string
95
     */
96
    var $AltBody           = "";
90
  /**
91
   * Sets the Subject of the message.
92
   * @var string
93
   */
94
  var $Subject           = '';
97 95

  
98
    /**
99
     * Sets word wrapping on the body of the message to a given number of 
100
     * characters.
101
     * @var int
102
     */
103
    var $WordWrap          = 0;
96
  /**
97
   * Sets the Body of the message.  This can be either an HTML or text body.
98
   * If HTML then run IsHTML(true).
99
   * @var string
100
   */
101
  var $Body              = '';
104 102

  
105
    /**
106
     * Method to send mail: ("mail", "sendmail", or "smtp").
107
     * @var string
108
     */
109
    var $Mailer            = "mail";
103
  /**
104
   * Sets the text-only body of the message.  This automatically sets the
105
   * email to multipart/alternative.  This body can be read by mail
106
   * clients that do not have HTML email capability such as mutt. Clients
107
   * that can read HTML will view the normal Body.
108
   * @var string
109
   */
110
  var $AltBody           = '';
110 111

  
111
    /**
112
     * Sets the path of the sendmail program.
113
     * @var string
114
     */
115
    var $Sendmail          = "/usr/sbin/sendmail";
116
    
117
    /**
118
     * Path to PHPMailer plugins.  This is now only useful if the SMTP class 
119
     * is in a different directory than the PHP include path.  
120
     * @var string
121
     */
122
    var $PluginDir         = "";
112
  /**
113
   * Sets word wrapping on the body of the message to a given number of
114
   * characters.
115
   * @var int
116
   */
117
  var $WordWrap          = 0;
123 118

  
124
    /**
125
     *  Holds PHPMailer version.
126
     *  @var string
127
     */
128
    var $Version           = "1.73";
119
  /**
120
   * Method to send mail: ("mail", "sendmail", or "smtp").
121
   * @var string
122
   */
123
  var $Mailer            = 'mail';
129 124

  
130
    /**
131
     * Sets the email address that a reading confirmation will be sent.
132
     * @var string
133
     */
134
    var $ConfirmReadingTo  = "";
125
  /**
126
   * Sets the path of the sendmail program.
127
   * @var string
128
   */
129
  var $Sendmail          = '/usr/sbin/sendmail';
135 130

  
136
    /**
137
     *  Sets the hostname to use in Message-Id and Received headers
138
     *  and as default HELO string. If empty, the value returned
139
     *  by SERVER_NAME is used or 'localhost.localdomain'.
140
     *  @var string
141
     */
142
    var $Hostname          = "";
131
  /**
132
   * Path to PHPMailer plugins.  This is now only useful if the SMTP class
133
   * is in a different directory than the PHP include path.
134
   * @var string
135
   */
136
  var $PluginDir         = '';
143 137

  
144
    /////////////////////////////////////////////////
145
    // SMTP VARIABLES
146
    /////////////////////////////////////////////////
138
  /**
139
   * Holds PHPMailer version.
140
   * @var string
141
   */
142
  var $Version           = "2.0.0 rc3";
147 143

  
148
    /**
149
     *  Sets the SMTP hosts.  All hosts must be separated by a
150
     *  semicolon.  You can also specify a different port
151
     *  for each host by using this format: [hostname:port]
152
     *  (e.g. "smtp1.example.com:25;smtp2.example.com").
153
     *  Hosts will be tried in order.
154
     *  @var string
155
     */
156
    var $Host        = "localhost";
144
  /**
145
   * Sets the email address that a reading confirmation will be sent.
146
   * @var string
147
   */
148
  var $ConfirmReadingTo  = '';
157 149

  
158
    /**
159
     *  Sets the default SMTP server port.
160
     *  @var int
161
     */
162
    var $Port        = 25;
150
  /**
151
   * Sets the hostname to use in Message-Id and Received headers
152
   * and as default HELO string. If empty, the value returned
153
   * by SERVER_NAME is used or 'localhost.localdomain'.
154
   * @var string
155
   */
156
  var $Hostname          = '';
163 157

  
164
    /**
165
     *  Sets the SMTP HELO of the message (Default is $Hostname).
166
     *  @var string
167
     */
168
    var $Helo        = "";
158
  /////////////////////////////////////////////////
159
  // PROPERTIES FOR SMTP
160
  /////////////////////////////////////////////////
169 161

  
170
    /**
171
     *  Sets SMTP authentication. Utilizes the Username and Password variables.
172
     *  @var bool
173
     */
174
    var $SMTPAuth     = false;
162
  /**
163
   * Sets the SMTP hosts.  All hosts must be separated by a
164
   * semicolon.  You can also specify a different port
165
   * for each host by using this format: [hostname:port]
166
   * (e.g. "smtp1.example.com:25;smtp2.example.com").
167
   * Hosts will be tried in order.
168
   * @var string
169
   */
170
  var $Host        = 'localhost';
175 171

  
176
    /**
177
     *  Sets SMTP username.
178
     *  @var string
179
     */
180
    var $Username     = "";
172
  /**
173
   * Sets the default SMTP server port.
174
   * @var int
175
   */
176
  var $Port        = 25;
181 177

  
182
    /**
183
     *  Sets SMTP password.
184
     *  @var string
185
     */
186
    var $Password     = "";
178
  /**
179
   * Sets the SMTP HELO of the message (Default is $Hostname).
180
   * @var string
181
   */
182
  var $Helo        = '';
187 183

  
188
    /**
189
     *  Sets the SMTP server timeout in seconds. This function will not 
190
     *  work with the win32 version.
191
     *  @var int
192
     */
193
    var $Timeout      = 10;
184
  /**
185
   * Sets connection prefix.
186
   * Options are "", "ssl" or "tls"
187
   * @var string
188
   */
189
  var $SMTPSecure = "";
194 190

  
195
    /**
196
     *  Sets SMTP class debugging on or off.
197
     *  @var bool
198
     */
199
    var $SMTPDebug    = false;
191
  /**
192
   * Sets SMTP authentication. Utilizes the Username and Password variables.
193
   * @var bool
194
   */
195
  var $SMTPAuth     = false;
200 196

  
201
    /**
202
     * Prevents the SMTP connection from being closed after each mail 
203
     * sending.  If this is set to true then to close the connection 
204
     * requires an explicit call to SmtpClose(). 
205
     * @var bool
206
     */
207
    var $SMTPKeepAlive = false;
197
  /**
198
   * Sets SMTP username.
199
   * @var string
200
   */
201
  var $Username     = '';
208 202

  
209
    /**#@+
210
     * @access private
211
     */
212
    var $smtp            = NULL;
213
    var $to              = array();
214
    var $cc              = array();
215
    var $bcc             = array();
216
    var $ReplyTo         = array();
217
    var $attachment      = array();
218
    var $CustomHeader    = array();
219
    var $message_type    = "";
220
    var $boundary        = array();
221
    var $language        = array();
222
    var $error_count     = 0;
223
    var $LE              = "\n";
224
    /**#@-*/
225
    
226
    /////////////////////////////////////////////////
227
    // VARIABLE METHODS
228
    /////////////////////////////////////////////////
203
  /**
204
   * Sets SMTP password.
205
   * @var string
206
   */
207
  var $Password     = '';
229 208

  
230
    /**
231
     * Sets message type to HTML.  
232
     * @param bool $bool
233
     * @return void
234
     */
235
    function IsHTML($bool) {
236
        if($bool == true)
237
            $this->ContentType = "text/html";
238
        else
239
            $this->ContentType = "text/plain";
240
    }
209
  /**
210
   * Sets the SMTP server timeout in seconds. This function will not
211
   * work with the win32 version.
212
   * @var int
213
   */
214
  var $Timeout      = 10;
241 215

  
242
    /**
243
     * Sets Mailer to send message using SMTP.
244
     * @return void
245
     */
246
    function IsSMTP() {
247
        $this->Mailer = "smtp";
248
    }
216
  /**
217
   * Sets SMTP class debugging on or off.
218
   * @var bool
219
   */
220
  var $SMTPDebug    = false;
249 221

  
250
    /**
251
     * Sets Mailer to send message using PHP mail() function.
252
     * @return void
253
     */
254
    function IsMail() {
255
        $this->Mailer = "mail";
256
    }
222
  /**
223
   * Prevents the SMTP connection from being closed after each mail
224
   * sending.  If this is set to true then to close the connection
225
   * requires an explicit call to SmtpClose().
226
   * @var bool
227
   */
228
  var $SMTPKeepAlive = false;
257 229

  
258
    /**
259
     * Sets Mailer to send message using the $Sendmail program.
260
     * @return void
261
     */
262
    function IsSendmail() {
263
        $this->Mailer = "sendmail";
264
    }
230
  /**
231
   * Provides the ability to have the TO field process individual
232
   * emails, instead of sending to entire TO addresses
233
   * @var bool
234
   */
235
  var $SingleTo = false;
265 236

  
266
    /**
267
     * Sets Mailer to send message using the qmail MTA. 
268
     * @return void
269
     */
270
    function IsQmail() {
271
        $this->Sendmail = "/var/qmail/bin/sendmail";
272
        $this->Mailer = "sendmail";
273
    }
237
  /////////////////////////////////////////////////
238
  // PROPERTIES, PRIVATE
239
  /////////////////////////////////////////////////
274 240

  
241
  var $smtp            = NULL;
242
  var $to              = array();
243
  var $cc              = array();
244
  var $bcc             = array();
245
  var $ReplyTo         = array();
246
  var $attachment      = array();
247
  var $CustomHeader    = array();
248
  var $message_type    = '';
249
  var $boundary        = array();
250
  var $language        = array();
251
  var $error_count     = 0;
252
  var $LE              = "\n";
275 253

  
276
    /////////////////////////////////////////////////
277
    // RECIPIENT METHODS
278
    /////////////////////////////////////////////////
254
  /////////////////////////////////////////////////
255
  // METHODS, VARIABLES
256
  /////////////////////////////////////////////////
279 257

  
280
    /**
281
     * Adds a "To" address.  
282
     * @param string $address
283
     * @param string $name
284
     * @return void
285
     */
286
    function AddAddress($address, $name = "") {
287
        $cur = count($this->to);
288
        $this->to[$cur][0] = trim($address);
289
        $this->to[$cur][1] = $name;
258
  /**
259
   * Sets message type to HTML.
260
   * @param bool $bool
261
   * @return void
262
   */
263
  function IsHTML($bool) {
264
    if($bool == true) {
265
      $this->ContentType = 'text/html';
266
    } else {
267
      $this->ContentType = 'text/plain';
290 268
    }
269
  }
291 270

  
292
    /**
293
     * Adds a "Cc" address. Note: this function works
294
     * with the SMTP mailer on win32, not with the "mail"
295
     * mailer.  
296
     * @param string $address
297
     * @param string $name
298
     * @return void
299
    */
300
    function AddCC($address, $name = "") {
301
        $cur = count($this->cc);
302
        $this->cc[$cur][0] = trim($address);
303
        $this->cc[$cur][1] = $name;
304
    }
271
  /**
272
   * Sets Mailer to send message using SMTP.
273
   * @return void
274
   */
275
  function IsSMTP() {
276
    $this->Mailer = 'smtp';
277
  }
305 278

  
306
    /**
307
     * Adds a "Bcc" address. Note: this function works
308
     * with the SMTP mailer on win32, not with the "mail"
309
     * mailer.  
310
     * @param string $address
311
     * @param string $name
312
     * @return void
313
     */
314
    function AddBCC($address, $name = "") {
315
        $cur = count($this->bcc);
316
        $this->bcc[$cur][0] = trim($address);
317
        $this->bcc[$cur][1] = $name;
318
    }
279
  /**
280
   * Sets Mailer to send message using PHP mail() function.
281
   * @return void
282
   */
283
  function IsMail() {
284
    $this->Mailer = 'mail';
285
  }
319 286

  
320
    /**
321
     * Adds a "Reply-to" address.  
322
     * @param string $address
323
     * @param string $name
324
     * @return void
325
     */
326
    function AddReplyTo($address, $name = "") {
327
        $cur = count($this->ReplyTo);
328
        $this->ReplyTo[$cur][0] = trim($address);
329
        $this->ReplyTo[$cur][1] = $name;
330
    }
287
  /**
288
   * Sets Mailer to send message using the $Sendmail program.
289
   * @return void
290
   */
291
  function IsSendmail() {
292
    $this->Mailer = 'sendmail';
293
  }
331 294

  
295
  /**
296
   * Sets Mailer to send message using the qmail MTA.
297
   * @return void
298
   */
299
  function IsQmail() {
300
    $this->Sendmail = '/var/qmail/bin/sendmail';
301
    $this->Mailer = 'sendmail';
302
  }
332 303

  
333
    /////////////////////////////////////////////////
334
    // MAIL SENDING METHODS
335
    /////////////////////////////////////////////////
304
  /////////////////////////////////////////////////
305
  // METHODS, RECIPIENTS
306
  /////////////////////////////////////////////////
336 307

  
337
    /**
338
     * Creates message and assigns Mailer. If the message is
339
     * not sent successfully then it returns false.  Use the ErrorInfo
340
     * variable to view description of the error.  
341
     * @return bool
342
     */
343
    function Send() {
344
        $header = "";
345
        $body = "";
346
        $result = true;
308
  /**
309
   * Adds a "To" address.
310
   * @param string $address
311
   * @param string $name
312
   * @return void
313
   */
314
  function AddAddress($address, $name = '') {
315
    $cur = count($this->to);
316
    $this->to[$cur][0] = trim($address);
317
    $this->to[$cur][1] = $name;
318
  }
347 319

  
348
        if((count($this->to) + count($this->cc) + count($this->bcc)) < 1)
349
        {
350
            $this->SetError($this->Lang("provide_address"));
351
            return false;
352
        }
320
  /**
321
   * Adds a "Cc" address. Note: this function works
322
   * with the SMTP mailer on win32, not with the "mail"
323
   * mailer.
324
   * @param string $address
325
   * @param string $name
326
   * @return void
327
   */
328
  function AddCC($address, $name = '') {
329
    $cur = count($this->cc);
330
    $this->cc[$cur][0] = trim($address);
331
    $this->cc[$cur][1] = $name;
332
  }
353 333

  
354
        // Set whether the message is multipart/alternative
355
        if(!empty($this->AltBody))
356
            $this->ContentType = "multipart/alternative";
334
  /**
335
   * Adds a "Bcc" address. Note: this function works
336
   * with the SMTP mailer on win32, not with the "mail"
337
   * mailer.
338
   * @param string $address
339
   * @param string $name
340
   * @return void
341
   */
342
  function AddBCC($address, $name = '') {
343
    $cur = count($this->bcc);
344
    $this->bcc[$cur][0] = trim($address);
345
    $this->bcc[$cur][1] = $name;
346
  }
357 347

  
358
        $this->error_count = 0; // reset errors
359
        $this->SetMessageType();
360
        $header .= $this->CreateHeader();
361
        $body = $this->CreateBody();
348
  /**
349
   * Adds a "Reply-To" address.
350
   * @param string $address
351
   * @param string $name
352
   * @return void
353
   */
354
  function AddReplyTo($address, $name = '') {
355
    $cur = count($this->ReplyTo);
356
    $this->ReplyTo[$cur][0] = trim($address);
357
    $this->ReplyTo[$cur][1] = $name;
358
  }
362 359

  
363
        if($body == "") { return false; }
360
  /////////////////////////////////////////////////
361
  // METHODS, MAIL SENDING
362
  /////////////////////////////////////////////////
364 363

  
365
        // Choose the mailer
366
        switch($this->Mailer)
367
        {
368
            case "sendmail":
369
                $result = $this->SendmailSend($header, $body);
370
                break;
371
            case "mail":
372
                $result = $this->MailSend($header, $body);
373
                break;
374
            case "smtp":
375
                $result = $this->SmtpSend($header, $body);
376
                break;
377
            default:
378
            $this->SetError($this->Mailer . $this->Lang("mailer_not_supported"));
379
                $result = false;
380
                break;
381
        }
364
  /**
365
   * Creates message and assigns Mailer. If the message is
366
   * not sent successfully then it returns false.  Use the ErrorInfo
367
   * variable to view description of the error.
368
   * @return bool
369
   */
370
  function Send() {
371
    $header = '';
372
    $body = '';
373
    $result = true;
382 374

  
383
        return $result;
375
    if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
376
      $this->SetError($this->Lang('provide_address'));
377
      return false;
384 378
    }
385
    
386
    /**
387
     * Sends mail using the $Sendmail program.  
388
     * @access private
389
     * @return bool
390
     */
391
    function SendmailSend($header, $body) {
392
        if ($this->Sender != "")
393
            $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);
394
        else
395
            $sendmail = sprintf("%s -oi -t", $this->Sendmail);
396 379

  
397
        if(!@$mail = popen($sendmail, "w"))
398
        {
399
            $this->SetError($this->Lang("execute") . $this->Sendmail);
400
            return false;
401
        }
380
    /* Set whether the message is multipart/alternative */
381
    if(!empty($this->AltBody)) {
382
      $this->ContentType = 'multipart/alternative';
383
    }
402 384

  
403
        fputs($mail, $header);
404
        fputs($mail, $body);
405
        
406
        $result = pclose($mail) >> 8 & 0xFF;
407
        if($result != 0)
408
        {
409
            $this->SetError($this->Lang("execute") . $this->Sendmail);
410
            return false;
411
        }
385
    $this->error_count = 0; // reset errors
386
    $this->SetMessageType();
387
    $header .= $this->CreateHeader();
388
    $body = $this->CreateBody();
412 389

  
413
        return true;
390
    if($body == '') {
391
      return false;
414 392
    }
415 393

  
416
    /**
417
     * Sends mail using the PHP mail() function.  
418
     * @access private
419
     * @return bool
420
     */
421
    function MailSend($header, $body) {
422
        $to = "";
423
        for($i = 0; $i < count($this->to); $i++)
424
        {
425
            if($i != 0) { $to .= ", "; }
426
            $to .= $this->to[$i][0];
427
        }
394
    /* Choose the mailer */
395
    switch($this->Mailer) {
396
      case 'sendmail':
397
        $result = $this->SendmailSend($header, $body);
398
        break;
399
      case 'smtp':
400
        $result = $this->SmtpSend($header, $body);
401
        break;
402
      case 'mail':
403
        $result = $this->MailSend($header, $body);
404
        break;
405
      default:
406
        $result = $this->MailSend($header, $body);
407
        break;
408
        //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
409
        //$result = false;
410
        //break;
411
    }
428 412

  
429
        if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1)
430
        {
431
            $old_from = ini_get("sendmail_from");
432
            ini_set("sendmail_from", $this->Sender);
433
            $params = sprintf("-oi -f %s", $this->Sender);
434
            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, 
435
                        $header, $params);
436
        }
437
        else
438
            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);
413
    return $result;
414
  }
439 415

  
440
        if (isset($old_from))
441
            ini_set("sendmail_from", $old_from);
416
  /**
417
   * Sends mail using the $Sendmail program.
418
   * @access private
419
   * @return bool
420
   */
421
  function SendmailSend($header, $body) {
422
    if ($this->Sender != '') {
423
      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
424
    } else {
425
      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
426
    }
442 427

  
443
        if(!$rt)
444
        {
445
            $this->SetError($this->Lang("instantiate"));
446
            return false;
447
        }
428
    if(!@$mail = popen($sendmail, 'w')) {
429
      $this->SetError($this->Lang('execute') . $this->Sendmail);
430
      return false;
431
    }
448 432

  
449
        return true;
433
    fputs($mail, $header);
434
    fputs($mail, $body);
435

  
436
    $result = pclose($mail) >> 8 & 0xFF;
437
    if($result != 0) {
438
      $this->SetError($this->Lang('execute') . $this->Sendmail);
439
      return false;
450 440
    }
451 441

  
452
    /**
453
     * Sends mail via SMTP using PhpSMTP (Author:
454
     * Chris Ryan).  Returns bool.  Returns false if there is a
455
     * bad MAIL FROM, RCPT, or DATA input.
456
     * @access private
457
     * @return bool
458
     */
459
    function SmtpSend($header, $body) {
460
        include_once($this->PluginDir . "class.smtp.php");
461
        $error = "";
462
        $bad_rcpt = array();
442
    return true;
443
  }
463 444

  
464
        if(!$this->SmtpConnect())
465
            return false;
445
  /**
446
   * Sends mail using the PHP mail() function.
447
   * @access private
448
   * @return bool
449
   */
450
  function MailSend($header, $body) {
466 451

  
467
        $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender;
468
        if(!$this->smtp->Mail($smtp_from))
469
        {
470
            $error = $this->Lang("from_failed") . $smtp_from;
471
            $this->SetError($error);
472
            $this->smtp->Reset();
473
            return false;
474
        }
452
    $to = '';
453
    for($i = 0; $i < count($this->to); $i++) {
454
      if($i != 0) { $to .= ', '; }
455
      $to .= $this->AddrFormat($this->to[$i]);
456
    }
475 457

  
476
        // Attempt to send attach all recipients
477
        for($i = 0; $i < count($this->to); $i++)
478
        {
479
            if(!$this->smtp->Recipient($this->to[$i][0]))
480
                $bad_rcpt[] = $this->to[$i][0];
481
        }
482
        for($i = 0; $i < count($this->cc); $i++)
483
        {
484
            if(!$this->smtp->Recipient($this->cc[$i][0]))
485
                $bad_rcpt[] = $this->cc[$i][0];
486
        }
487
        for($i = 0; $i < count($this->bcc); $i++)
488
        {
489
            if(!$this->smtp->Recipient($this->bcc[$i][0]))
490
                $bad_rcpt[] = $this->bcc[$i][0];
491
        }
458
    $toArr = split(',', $to);
492 459

  
493
        if(count($bad_rcpt) > 0) // Create error message
494
        {
495
            for($i = 0; $i < count($bad_rcpt); $i++)
496
            {
497
                if($i != 0) { $error .= ", "; }
498
                $error .= $bad_rcpt[$i];
499
            }
500
            $error = $this->Lang("recipients_failed") . $error;
501
            $this->SetError($error);
502
            $this->smtp->Reset();
503
            return false;
460
    if ($this->Sender != '' && strlen(ini_get('safe_mode'))< 1) {
461
      $old_from = ini_get('sendmail_from');
462
      ini_set('sendmail_from', $this->Sender);
463
      $params = sprintf("-oi -f %s", $this->Sender);
464
      if ($this->SingleTo === true && count($toArr) > 1) {
465
        foreach ($toArr as $key => $val) {
466
          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
504 467
        }
505

  
506
        if(!$this->smtp->Data($header . $body))
507
        {
508
            $this->SetError($this->Lang("data_not_accepted"));
509
            $this->smtp->Reset();
510
            return false;
468
      } else {
469
        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
470
      }
471
    } else {
472
      if ($this->SingleTo === true && count($toArr) > 1) {
473
        foreach ($toArr as $key => $val) {
474
          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
511 475
        }
512
        if($this->SMTPKeepAlive == true)
513
            $this->smtp->Reset();
514
        else
515
            $this->SmtpClose();
476
      } else {
477
        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
478
      }
479
    }
516 480

  
517
        return true;
481
    if (isset($old_from)) {
482
      ini_set('sendmail_from', $old_from);
518 483
    }
519 484

  
520
    /**
521
     * Initiates a connection to an SMTP server.  Returns false if the 
522
     * operation failed.
523
     * @access private
524
     * @return bool
525
     */
526
    function SmtpConnect() {
527
        if($this->smtp == NULL) { $this->smtp = new SMTP(); }
485
    if(!$rt) {
486
      $this->SetError($this->Lang('instantiate'));
487
      return false;
488
    }
528 489

  
529
        $this->smtp->do_debug = $this->SMTPDebug;
530
        $hosts = explode(";", $this->Host);
531
        $index = 0;
532
        $connection = ($this->smtp->Connected()); 
490
    return true;
491
  }
533 492

  
534
        // Retry while there is no connection
535
        while($index < count($hosts) && $connection == false)
536
        {
537
            if(strstr($hosts[$index], ":"))
538
                list($host, $port) = explode(":", $hosts[$index]);
539
            else
540
            {
541
                $host = $hosts[$index];
542
                $port = $this->Port;
543
            }
493
  /**
494
   * Sends mail via SMTP using PhpSMTP (Author:
495
   * Chris Ryan).  Returns bool.  Returns false if there is a
496
   * bad MAIL FROM, RCPT, or DATA input.
497
   * @access private
498
   * @return bool
499
   */
500
  function SmtpSend($header, $body) {
501
    include_once($this->PluginDir . 'class.smtp.php');
502
    $error = '';
503
    $bad_rcpt = array();
544 504

  
545
            if($this->smtp->Connect($host, $port, $this->Timeout))
546
            {
547
                if ($this->Helo != '')
548
                    $this->smtp->Hello($this->Helo);
549
                else
550
                    $this->smtp->Hello($this->ServerHostname());
551
        
552
                if($this->SMTPAuth)
553
                {
554
                    if(!$this->smtp->Authenticate($this->Username, 
555
                                                  $this->Password))
556
                    {
557
                        $this->SetError($this->Lang("authenticate"));
558
                        $this->smtp->Reset();
559
                        $connection = false;
560
                    }
561
                }
562
                $connection = true;
563
            }
564
            $index++;
565
        }
566
        if(!$connection)
567
            $this->SetError($this->Lang("connect_host"));
505
    if(!$this->SmtpConnect()) {
506
      return false;
507
    }
568 508

  
569
        return $connection;
509
    $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
510
    if(!$this->smtp->Mail($smtp_from)) {
511
      $error = $this->Lang('from_failed') . $smtp_from;
512
      $this->SetError($error);
513
      $this->smtp->Reset();
514
      return false;
570 515
    }
571 516

  
572
    /**
573
     * Closes the active SMTP session if one exists.
574
     * @return void
575
     */
576
    function SmtpClose() {
577
        if($this->smtp != NULL)
578
        {
579
            if($this->smtp->Connected())
580
            {
581
                $this->smtp->Quit();
582
                $this->smtp->Close();
583
            }
584
        }
517
    /* Attempt to send attach all recipients */
518
    for($i = 0; $i < count($this->to); $i++) {
519
      if(!$this->smtp->Recipient($this->to[$i][0])) {
520
        $bad_rcpt[] = $this->to[$i][0];
521
      }
585 522
    }
523
    for($i = 0; $i < count($this->cc); $i++) {
524
      if(!$this->smtp->Recipient($this->cc[$i][0])) {
525
        $bad_rcpt[] = $this->cc[$i][0];
526
      }
527
    }
528
    for($i = 0; $i < count($this->bcc); $i++) {
529
      if(!$this->smtp->Recipient($this->bcc[$i][0])) {
530
        $bad_rcpt[] = $this->bcc[$i][0];
531
      }
532
    }
586 533

  
587
    /**
588
     * Sets the language for all class error messages.  Returns false 
589
     * if it cannot load the language file.  The default language type
590
     * is English.
591
     * @param string $lang_type Type of language (e.g. Portuguese: "br")
592
     * @param string $lang_path Path to the language file directory
593
     * @access public
594
     * @return bool
595
     */
596
    function SetLanguage($lang_type, $lang_path = "language/") {
597
        if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php'))
598
            include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
599
        else if(file_exists($lang_path.'phpmailer.lang-en.php'))
600
            include($lang_path.'phpmailer.lang-en.php');
601
        else
602
        {
603
            $this->SetError("Could not load language file");
604
            return false;
534
    if(count($bad_rcpt) > 0) { // Create error message
535
      for($i = 0; $i < count($bad_rcpt); $i++) {
536
        if($i != 0) {
537
          $error .= ', ';
605 538
        }
606
        $this->language = $PHPMAILER_LANG;
607
    
608
        return true;
539
        $error .= $bad_rcpt[$i];
540
      }
541
      $error = $this->Lang('recipients_failed') . $error;
542
      $this->SetError($error);
543
      $this->smtp->Reset();
544
      return false;
609 545
    }
610 546

  
611
    /////////////////////////////////////////////////
612
    // MESSAGE CREATION METHODS
613
    /////////////////////////////////////////////////
547
    if(!$this->smtp->Data($header . $body)) {
548
      $this->SetError($this->Lang('data_not_accepted'));
549
      $this->smtp->Reset();
550
      return false;
551
    }
552
    if($this->SMTPKeepAlive == true) {
553
      $this->smtp->Reset();
554
    } else {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff