diff options
author | Sarven Capadisli <csarven@controlyourself.ca> | 2009-07-20 23:12:13 +0000 |
---|---|---|
committer | Sarven Capadisli <csarven@controlyourself.ca> | 2009-07-20 23:12:13 +0000 |
commit | d20d1a48233851ae77a7bdaf654110136ee39377 (patch) | |
tree | 95001762d235f19b2560d63f2a52ff1c20840efb | |
parent | b46961558ac3710fcaeeb13e288316e9d091fd49 (diff) | |
parent | 6313cf5bfe00c2810f1cdc0ac558643543e5f02f (diff) |
Merge branch '0.8.x' of git@gitorious.org:laconica/mainline into 0.8.x
-rwxr-xr-x | scripts/maildaemon.php | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/scripts/maildaemon.php b/scripts/maildaemon.php index 11ddf06b7..3f5402bec 100755 --- a/scripts/maildaemon.php +++ b/scripts/maildaemon.php @@ -299,25 +299,37 @@ class MailerDaemon $attachments = array(); + $this->extract_part($parsed,$msg,$attachments); + + return array($from, $to, $msg, $attachments); + } + + function extract_part($parsed,&$msg,&$attachments){ if ($parsed->ctype_primary == 'multipart') { - foreach ($parsed->parts as $part) { - if ($part->ctype_primary == 'text' && - $part->ctype_secondary == 'plain') { - $msg = $part->body; - }else{ - if ($part->body) { - $attachment = tmpfile(); - fwrite($attachment, $part->body); - $attachments[] = $attachment; - } + if($parsed->ctype_secondary == 'alternative'){ + $altmsg = $this->extract_msg_from_multipart_alternative_part($parsed); + if(!empty($altmsg)) $msg = $altmsg; + }else{ + foreach($parsed->parts as $part){ + $this->extract_part($part,$msg,$attachments); } } - } else if ($type == 'text/plain') { + } else if ($parsed->ctype_primary == 'text' + && $parsed->ctype_secondary=='plain') { $msg = $parsed->body; - } else { - $this->unsupported_type($type); + }else if(!empty($parsed->body)){ + $attachment = tmpfile(); + fwrite($attachment, $parsed->body); + $attachments[] = $attachment; } - return array($from, $to, $msg, $attachments); + } + + function extract_msg_from_multipart_alternative_part($parsed){ + foreach ($parsed->parts as $part) { + $this->extract_part($part,$msg,$attachments); + } + //we don't want any attachments that are a result of this parsing + return $msg; } function unsupported_type($type) |