| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Deliver_IMAP.class.php |
| 5 | * |
| 6 | * Delivery backend for the Deliver class. |
| 7 | * |
| 8 | * @copyright 1999-2010 The SquirrelMail Project Team |
| 9 | * @license http://opensource.org/licenses/gpl-license.php GNU Public License |
| 10 | * @version $Id$ |
| 11 | * @package squirrelmail |
| 12 | */ |
| 13 | |
| 14 | /** This of course depends upon Deliver.. */ |
| 15 | |
| 16 | require_once(SM_PATH . 'class/deliver/Deliver.class.php'); |
| 17 | |
| 18 | /** |
| 19 | * This class is incomplete and entirely undocumented. |
| 20 | * @package squirrelmail |
| 21 | */ |
| 22 | class Deliver_IMAP extends Deliver { |
| 23 | |
| 24 | function getBcc() { |
| 25 | return true; |
| 26 | } |
| 27 | |
| 28 | /** |
| 29 | * function send_mail - send the message parts to the IMAP stream |
| 30 | * |
| 31 | * Overridden from parent class so that we can insert some |
| 32 | * IMAP APPEND commands before and after the message is |
| 33 | * sent on the IMAP stream. |
| 34 | * |
| 35 | * @param Message $message Message object to send |
| 36 | * @param string $header Headers ready to send |
| 37 | * @param string $boundary Message parts boundary |
| 38 | * @param resource $stream Handle to the SMTP stream |
| 39 | * (when FALSE, nothing will be |
| 40 | * written to the stream; this can |
| 41 | * be used to determine the actual |
| 42 | * number of bytes that will be |
| 43 | * written to the stream) |
| 44 | * @param int &$raw_length The number of bytes written (or that |
| 45 | * would have been written) to the |
| 46 | * output stream - NOTE that this is |
| 47 | * passed by reference |
| 48 | * @param string $folder The IMAP folder to which the |
| 49 | * message is being sent |
| 50 | * |
| 51 | * @return void |
| 52 | * |
| 53 | */ |
| 54 | function send_mail($message, $header, $boundary, $stream=false, |
| 55 | &$raw_length, $folder) { |
| 56 | |
| 57 | // write the body without providing a stream so we |
| 58 | // can calculate the final length - after this call, |
| 59 | // $final_length will be our correct final length value |
| 60 | // |
| 61 | $final_length = $raw_length; |
| 62 | $this->writeBody($message, 0, $final_length, $boundary); |
| 63 | |
| 64 | |
| 65 | // now if we have a real live stream, send the message |
| 66 | // |
| 67 | if ($stream) { |
| 68 | sqimap_append ($stream, $folder, $final_length); |
| 69 | |
| 70 | $this->preWriteToStream($header); |
| 71 | $this->writeToStream($stream, $header); |
| 72 | $this->writeBody($message, $stream, $raw_length, $boundary); |
| 73 | |
| 74 | sqimap_append_done ($stream, $folder); |
| 75 | } |
| 76 | |
| 77 | } |
| 78 | |
| 79 | |
| 80 | /* to do: finishing the imap-class so the initStream function can call the |
| 81 | imap-class */ |
| 82 | } |