Blame view

application/libs/PHPMailer/docs/extending.html 3.5 KB
8d65d0ce   andryeyev   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  <html>
  <head>
  <title>Examples using phpmailer</title>
  </head>
  
  <body>
  
  <h2>Examples using PHPMailer</h2>
  
  <h3>1. Advanced Example</h3>
  <p>
  
  This demonstrates sending multiple email messages with binary attachments
  from a MySQL database using multipart/alternative messages.<p>
  
  <pre>
  require 'PHPMailerAutoload.php';
  
  $mail = new PHPMailer();
  
  $mail->From     = 'list@example.com';
  $mail->FromName = 'List manager';
  $mail->Host     = 'smtp1.example.com;smtp2.example.com';
  $mail->Mailer   = 'smtp';
  
  @mysqli_connect('localhost','root','password');
  @mysqli_select_db("my_company");
  $query = "SELECT full_name, email, photo FROM employee";
  $result = @mysqli_query($query);
  
  while ($row = mysqli_fetch_assoc($result))
  {
      // HTML body
      $body  = "Hello &lt;font size=\"4\"&gt;" . $row['full_name'] . "&lt;/font&gt;, &lt;p&gt;";
      $body .= "&lt;i&gt;Your&lt;/i&gt; personal photograph to this message.&lt;p&gt;";
      $body .= "Sincerely, &lt;br&gt;";
      $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'] . "&lt;br&gt;";
  
      // Clear all addresses and attachments for next loop
      $mail->clearAddresses();
      $mail->clearAttachments();
  }
  </pre>
  <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, and it's very easy to do:
  
  <p>
  Here's a class that extends the phpmailer class and sets the defaults
  for the particular site:<br>
  PHP include file: my_phpmailer.php
  <p>
  
  <pre>
  require 'PHPMailerAutoload.php';
  
  class my_phpmailer extends PHPMailer {
      // Set default variables for all new objects
      public $From     = 'from@example.com';
      public $FromName = 'Mailer';
      public $Host     = 'smtp1.example.com;smtp2.example.com';
      public $Mailer   = 'smtp';                         // Alternative to isSMTP()
      public $WordWrap = 75;
  
      // Replace the default debug output function
      protected function edebug($msg) {
          print('My Site Error');
          print('Description:');
          printf('%s', $msg);
          exit;
      }
  
      //Extend the send function
      public function send() {
          $this->Subject = '[Yay for me!] '.$this->Subject;
          return parent::send()
      }
  
      // Create an additional function
      public function do_something($something) {
          // Place your new code here
      }
  }
  </pre>
  <br>
  Now here's a normal PHP page in the site, which will have all the defaults set above:<br>
  
  <pre>
  require 'my_phpmailer.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>
  </body>
  </html>