X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=email.php;h=c7ae44f84cf6681fb1f7a5a3186c8576fdd6fda1;hb=de27e8c238024aa05a21d8e4f8eaeadde9ae85bc;hp=5d119fc438ce65d4a98c686875b9a59a1d17cf2f;hpb=3bec0ef771d741361c6c4c4c1ff069398f6e37a0;p=wfpl.git
diff --git a/email.php b/email.php
index 5d119fc..c7ae44f 100644
--- a/email.php
+++ b/email.php
@@ -2,36 +2,37 @@
# Copyright (C) 2006 Jason Woofenden
#
-# This file is part of wfpl.
-#
-# wfpl is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# wfpl is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
# You should have received a copy of the GNU General Public License
-# along with wfpl; see the file COPYING. If not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
+# along with this program. If not, see .
# This function will SAFELY send e-mail (ie you can pass parameters to it
# that you got from a form and not worry about header injection.) Weird
# characters are stripped from the $subject and from the real names, but e-mail
-# addresses are not modified at all. If an e-mail address is invalid this
-# function will return non-zero.
+# addresses are not modified at all.
+
+# RETURN values:
+# 0: e-mail successfully accepted for delivery
+# 1: badly formatted "from" address
+# 2: badly formatted "to" address
+# 5: message rejected by mail() (reason unknown)
# You cannot pass more than one address to any parameter
# address fields (from, to, cc, bcc) can be in either of these formats:
# 1) me@foo.com 2) Me Who
# returns 0 on success
-function email($from, $to, $subject, $message, $cc = '', $bcc = '') {
+function email($from, $to, $subject, $message, $reply_to = '', $cc = '', $bcc = '') {
if(($from = email_header($from)) === false) { return 1; }
if(($to = email_header($to)) === false) { return 2; }
if(($cc = email_header($cc)) === false) { return 3; }
@@ -40,15 +41,21 @@ function email($from, $to, $subject, $message, $cc = '', $bcc = '') {
if($to == '') { return 2; }
#FIXME should allow many more characters here
- $subject = ereg_replace("[^a-zA-Z _'-]", '_', $subject);
+ $subject = ereg_replace("[^a-zA-Z0-9 _#'.:&,-]", '_', $subject);
$headers = "From: $from";
+ if($reply_to) {
+ $headers .= "\r\nReply-To: $reply_to";
+ }
if($cc) {
$headers .= "\r\nCC: $cc";
}
if($bcc) {
$headers .= "\r\nBCC: $bcc";
}
+ #header('Content-Type: text/plain');
+ #print_r(array($to, $subject, $message, $headers));
+ #exit();
if(mail($to, $subject, $message, $headers)) {
return 0;
} else {
@@ -70,9 +77,10 @@ function email_header($addr) {
if(ereg('<.*>$', $addr) !== false) {
# format 2
- list($name, $email) = split('<', $addr);
+ $div = strrpos($addr, '<');
+ $name = substr($addr, 0 , $div);
$name = rtrim($name);
- $email = substr($email, 0, -1); # get rid of the '>' at the end
+ $email = substr($addr, $div + 1, -1);
} else {
$email = $addr;
$name = ereg_replace('@.*', '', $addr);
@@ -83,7 +91,7 @@ function email_header($addr) {
}
#FIXME should allow many more characters here
- $name = ereg_replace("[^a-zA-Z _'-]", '_', $name);
+ $name = ereg_replace("[^a-zA-Z0-9 _'.-]", '_', $name);
return $name . ' <' . $email . '>';
}