From: robert Date: Sat, 16 Aug 2003 10:41:14 +0000 (+0000) Subject: add email class for sending mail easily X-Git-Url: https://git-public.kairo.at/?a=commitdiff_plain;h=0c81b5b3f0abd3cadb90eefe2c211a9cddf9cbc7;p=php-utility-classes.git add email class for sending mail easily --- diff --git a/include/classes/email.php-class b/include/classes/email.php-class new file mode 100755 index 0000000..0ea1698 --- /dev/null +++ b/include/classes/email.php-class @@ -0,0 +1,241 @@ +debug_toSingleAddress = $debug_email; } + + function setSubject($newsubject) { $this->subject = $newsubject; } + + function setSender($email, $name = "") { $this->sender = array("mail" => $email, "name" => $name); } + + function setReplyTo($email, $name = "") { $this->replyto = array("mail" => $email, "name" => $name); } + + function addRecipient($email, $name = "") { + $this->recipients[] = array("mail" => $email, "name" => $name); + } + + function addCC($email, $name = "") { + $this->cc[] = array("mail" => $email, "name" => $name); + } + + function addBCC($email, $name = "") { + $this->bcc[] = array("mail" => $email, "name" => $name); + } + + function addHeader($hname, $hcontent = "") { + $this->headers[] = array("name" => $hname, "content" => $hcontent); + } + + function addMailText($textpart) { $this->mailtext .= $textpart; } + + function addAttachment($aname, $acontent, $atype = "application/octet-stream") { + $this->attachments[] = array("name" => $aname, "content" => $acontent, "type" => $atype); + } + + function send() { + global $util; + $mtxt = ""; + $hdrs = "MIME-Version: 1.0\n"; + $subj = $this->mimeencode($this->subject); + if (strlen($this->sender["name"])) { + $hdrs .= "From: ".$this->mimeencode($this->sender["name"])." <".$this->sender["mail"].">\n"; + } + else { $hdrs .= "From: ".$this->sender["mail"]."\n"; } + if (count($this->replyto)) { + if (strlen($this->replyto["name"])) { + $hdrs .= "Reply-to: ".$this->mimeencode($this->replyto["name"])." <".$this->replyto["mail"].">\n"; + } + else { $hdrs .= "Reply-to: ".$this->replyto["mail"]."\n"; } + } + if (count($this->recipients)) { + $recpt = ""; + foreach ($this->recipients as $address) { + if (strlen($address["name"])) { $recpt .= $this->mimeencode($address["name"])." <".$address["mail"].">,"; } + else { $recpt .= $address["mail"].","; } + } + $recpt = ereg_replace(",$", "", $recpt); + } + if (count($this->cc)) { + $adrs = ""; + foreach ($this->cc as $address) { + if (strlen($address["name"])) { $adrs .= $this->mimeencode($address["name"])." <".$address["mail"].">,"; } + else { $adrs .= $address["mail"].","; } + } + $adrs = ereg_replace(",$", "", $adrs); + $hdrs .= (strlen($this->debug_toSingleAddress)?"X-Real-":"")."Cc: $adrs\n"; + } + if (count($this->bcc)) { + $adrs = ""; + foreach ($this->bcc as $address) { + if (strlen($address["name"])) { $adrs .= $this->mimeencode($address["name"])." <".$address["mail"].">,"; } + else { $adrs .= $address["mail"].","; } + } + $adrs = ereg_replace(",$", "", $adrs); + $hdrs .= (strlen($this->debug_toSingleAddress)?"X-Real-":"")."Bcc: $adrs\n"; + } + if (count($this->headers)) { + foreach ($this->headers as $header) { + $hdrs .= $header["name"].": ".$header["content"]."\n"; + } + } + if (count($this->attachments)) { + $boundary = "KaiRoJVPSteyr1030713"; + $hdrs .= "Content-Type: multipart/mixed; boundary=\"$boundary\";\n"; + $hdrs .= "Content-Transfer-Encoding: 7bit\n"; + $mtxt .= "This part of the E-mail should never be seen. If\n"; + $mtxt .= "you are reading this, consider upgrading your e-mail\n"; + $mtxt .= "client to a MIME-compatible client.\n"; + $mtxt .= "--$boundary\n"; + if (ereg("text/.*", $this->content_type)) { + $mtxt .= "Content-Type: ".$this->content_type."; charset=\"".$this->charset."\"\n"; + } + else { + $mtxt .= "Content-Type: ".$this->content_type."\n"; + } + $mtxt .= "Content-Transfer-Encoding: 8bit\n\n"; + } + else { + if (ereg("text/.*", $this->content_type)) { + $hdrs .= "Content-Type: ".$this->content_type."; charset=\"".$this->charset."\"\n"; + } + else { + $hdrs .= "Content-Type: ".$this->content_type."\n"; + } + $hdrs .= "Content-Transfer-Encoding: 8bit\n"; + } + $mtxt .= stripslashes($this->mailtext); + if (count($this->attachments)) { + foreach ($this->attachments as $attach) { + $mtxt .= "--$boundary\n"; + $mtxt .= "Content-Type: ".$attach["type"]."; name=\"".$attach["name"]."\";\n"; + $mtxt .= "Content-Transfer-Encoding: base64\n"; + $mtxt .= "Content-Disposition: attachment\n\n"; + $mtxt .= rtrim(chunk_split(base64_encode($attach["content"]), 76)); ; + $mtxt .= "\n"; + } + $mtext .= "--$boundary--\n"; + } + + if (strlen($this->debug_toSingleAddress)) { + $hdrs .= "X-Real-To: $recpt\n"; + $recpt = $this->debug_toSingleAddress; + } + + //print("Subject: ".$util->htmlify($subj)."
\n"); + //print("To: ".$util->htmlify($recpt)."
\n"); + //print(nl2br($util->htmlify($hdrs))); + //print(nl2br($util->htmlify($mtxt))); + mail($recpt, $subj, $mtxt, $hdrs); + } + + function mimeencode($fieldtext) { + $mText = imap_8bit($fieldtext); + if ($mText != $fieldtext) { + $trans = array("_" => "=5F", " " => "_", "?" => "=3F"); + $mText = strtr($mText, $trans); + $mText = "=?ISO-8859-15?Q?".$mText."?="; + } + return $mText; + } + + +} +?>