Ir para conteúdo
Fórum CódigoFonte.net
Alex Gotardi

Tutorial: Enviar email com anexo

Recommended Posts

Esta classe foi desenvolvida pelo Gustavo Gomes, e está licenciada sobre GNU General Public License (GPL)

As classes estão disponíveis para PHP 4 e 5

Começaremos pelo PHP4

São necessário 4 arquivos

  • AbstractMail.php
  • AttachmentMail.php
  • Mail.php
  • Multipart.php

AbstractMail.php

<?php

if (!defined("ABSTRACTMAIL_CRLF"))
    define("ABSTRACTMAIL_CRLF", "\n");

if (!defined("ABSTRACTMAIL_HIGH_PRIORITY"))
    define("ABSTRACTMAIL_HIGH_PRIORITY", 2);
if (!defined("ABSTRACTMAIL_NORMAL_PRIORITY"))
    define("ABSTRACTMAIL_NORMAL_PRIORITY", 3);
if (!defined("ABSTRACTMAIL_LOW_PRIORITY"))
    define("ABSTRACTMAIL_LOW_PRIORITY", 4);

/**
 * Abstract class used for email sender implementation classes
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class AbstractMail {
    
    var $to = array();
    var $fromName;
    var $fromMail;
    var $subject;
    
    var $contentType;
    var $charset;
    
    var $priority = 3;
    
    var $headers = array();
    var $body;

    function AbstractMail($to, $subject, $fromName="", $fromMail="") {
        $this->to[] = $to;
        $this->subject = $subject;
        $this->fromName = $fromName;
        $this->fromMail = $fromMail;
        $this->init();
    }
    
    function init() {
        if ($this->fromName != "" && $this->fromMail != "") {
            $this->addHeader("From: ".$this->fromName." <".$this->fromMail.">");
            $this->addHeader("Reply-To: ".$this->fromName." <".$this->fromMail.">");
        } else if ($this->fromName == "" && $this->fromMail != "") {
            $this->addHeader("From: ".$this->fromMail);
            $this->addHeader("Reply-To: ".$this->fromMail);
        }
    }
    
    function getPriority() {
        return $this->priority;
    }
    
    function setPriority($priority) {
        $this->priority = $priority;
    }
    
    function getContentType() {
        return $this->contentType;
    }
    
    function getCharset() {
        return $this->charset;
    }
    
    function addTo($mail) {
        $this->to[] = $mail;
    }
    
    function addCC($mail) {
        $this->addHeader("CC:".$mail);
    }

    function addBCC($mail) {
        $this->addHeader("BCC:".$mail);
    }

    function addHeader($header) {
        $this->headers[] = $header;
    }
    
    function buildTo() {
        return implode(", ",$this->to);
    }
    
    function buildHeaders() {
        $headers = "";
        if (count($this->headers) > 0) {
            for ($i = 0;$i < count($this->headers)-1;$i++)
                $headers .= $this->headers[$i].ABSTRACTMAIL_CRLF;
            $headers .= $this->headers[$i];
        }
        return $headers;
    }
    
    function createMessageHeaders($contentType, $encode="") {
        $out = "";
        if ($encode != "")
            $out .= "Content-type:".$contentType."; charset=".$encode;
        else
            $out .= "Content-type:".$contentType.";";
        return $out;
    }

    function validateAddress($mailadresse) {
        if (!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})/i",$mailadresse))
            return false;
        return true;
    }
    
    function resetHeaders() {
        $this->headers = array();
        $this->init();
    }
    
    function setBodyHtml($html, $charset="iso-8859-1") {}

    function setHtml($html, $charset="iso-8859-1") {}

    function setBodyText($text) {}
    
    function send() {}
    
}
?>
AttachmentMail.php
<?php

require_once("AbstractMail.php");

/**
 * Class to send emails with attachments in Text and HTML formats
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class AttachmentMail extends AbstractMail {

    var $uidBoundary;
    
    var $delimiter;
    
    var $contentTransferEncode = "7bit";

    var $attachment = array();
    
    function AttachmentMail($to, $subject, $fromName="", $fromMail="") {
        // Create a unique id boundary
        $this->uidBoundary = "_".md5(uniqid(time()));
        $this->delimiterBoundary = "--".$this->uidBoundary.ABSTRACTMAIL_CRLF;

        parent::AbstractMail($to, $subject, $fromName, $fromMail);
    }

    function setBodyHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = $this->createMessageHeaders("text/html",$charset);
        $this->body .= "<html><head>";
        $this->body .= "<meta http-equiv=Content-Type content=\"text/html; charset=".$charset."\">";
        $this->body .= "</head><body>";
        $this->body .= nl2br($html)."";
        $this->body .= "</body></html>";
        $this->body .= ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
    }
    
    function setHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = $this->createMessageHeaders("text/html",$charset);
        $this->body .= nl2br($html)."".ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
    }

    function setBodyText($text) {
        $this->contentType = "text/plain";
        $this->charset = "";
        $this->body = $this->createMessageHeaders("text/plain");
        $this->body .= $text.ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
    }
    
    function createMessageHeaders($contentType, $encode="") {
        $out = $this->delimiterBoundary;
        $out .= parent::createMessageHeaders($contentType, $encode);
        $out .= "Content-Transfer-Encoding: ".$this->contentTransferEncode.ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
        return $out;
    }
    
    function addAttachment($part) {
        $this->attachment[] = $part;
    }

    function send() {
        $this->addHeader("MIME-Version: 1.0");
        $this->addHeader("X-Mailer: Attachment Mailer ver. 1.0");
        $this->addHeader("X-Priority: ".$this->priority);
        $this->addHeader("Content-type: multipart/mixed;".ABSTRACTMAIL_CRLF.chr(9)." boundary=\"".$this->uidBoundary."\"".ABSTRACTMAIL_CRLF);
        $this->addHeader("This is a multi-part message in MIME format.");
        $headers = $this->buildHeaders();
        return mail($this->buildTo(),
                    $this->subject,
                    $this->body.$this->createAttachmentBlock(),
                    $headers);
    }
    
    function createAttachmentBlock() {
        $block = "";
        
        if (count($this->attachment) > 0) {
            $block .= $this->delimiterBoundary;
            for ($i = 0;$i < count($this->attachment);$i++) {
                $block .= $this->attachment[$i]->getContent();
                $block .= $this->delimiterBoundary;
            }
        }
        return $block;
    }
}
?>
Mail.php
<?php

require_once("AbstractMail.php");

/**
 * Class to send simple emails in Text and HTML formats
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class Mail extends AbstractMail {
    
    function Mail($to, $subject, $fromName="", $fromMail="") {
        parent::AbstractMail($to, $subject, $fromName, $fromMail);
    }

    function setBodyHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = "";
        $this->body .= "<html><head>";
        $this->body .= "<meta http-equiv=Content-Type content=\"text/html; charset=".$charset."\">";
        $this->body .= "</head><body>";
        $this->body .= nl2br($html)."";
        $this->body .= "</body></html>";
    }
    
    function setHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = nl2br($html)."";
    }

    function setBodyText($text) {
        $this->contentType = "text/plain";
        $this->charset = "";
        $this->body = $text;
    }

    function send() {
        $this->addHeader("MIME-Version: 1.0");
        $this->addHeader("X-Mailer: RLSP Mailer");
        $this->addHeader("X-Priority: ".$this->priority);
        $this->addHeader($this->createMessageHeaders($this->contentType, $this->charset));
        $headers = $this->buildHeaders();
        return mail($this->buildTo(),
                    $this->subject,
                    $this->body,
                    $headers);
    }
}
?>
Multipart.php
<?php

require_once("AbstractMail.php");

if (!defined("MULTIPART_DISPOSITION_ATTACHMENT"))
    define("MULTIPART_DISPOSITION_ATTACHMENT", "attachment");
if (!defined("MULTIPART_DISPOSITION_INLINE"))
    define("MULTIPART_DISPOSITION_INLINE", "inline");

/**
 * Representation for a attachment
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class Multipart {
    
    var $content;
    
    var $disposition;
    
    function Multipart($file="",$disposition="attachment") {
        if ($file != "")
            $this->setContent($file, $disposition);
    }
    
    function getContent() {
        return $this->content;
    }
    
    function getDisposition() {
        return $this->disposition;
    }
    
    /**
     * Use for $disposition "attachment" or "inline"
     * (f.e. example images inside a html mail
     * 
     * @param    file    string - nome do arquivo
     * @param    disposition    string
     * @return    boolean
     */
    function setContent($file, $disposition = "attachment") {
        $this->disposition = $disposition.
        $fileContent = $this->getFileData($file);
        if ($fileContent != "") {
            $filename = basename($file);
            if (function_exists("mime_content_type"))
                $fileType = mime_content_type($file);
            else
                $fileType = "";
            $chunks = chunk_split(base64_encode($fileContent));
            
            $mailPart = "";
            if ($fileType)
                $mailPart .= "Content-type:".$fileType.";".ABSTRACTMAIL_CRLF.chr(9)." name=\"".$filename."\"".ABSTRACTMAIL_CRLF;
            $mailPart .= "Content-length:".filesize($file).ABSTRACTMAIL_CRLF;
            $mailPart .= "Content-Transfer-Encoding: base64".ABSTRACTMAIL_CRLF;
            $mailPart .= "Content-Disposition: ".$disposition.";".chr(9)."filename=\"".$filename."\"".ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
            $mailPart .= $chunks;
            $mailPart .= ABSTRACTMAIL_CRLF.ABSTRACTMAIL_CRLF;
            $this->content = $mailPart;
                return true;
        }            
        return false;
    }
    
    function getFileData($filename) {
        if (file_exists($filename))
            return file_get_contents($filename);
        return "";
    }
}
?>
Salve o conteúdo dos 4 arquivos em uma pasta e agora vamos para a montagem de um exemplo, ainda em PHP 4 exemplo.php
<?php
/*
 * Created on 29/11/2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */

error_reporting(E_ALL);

require("Mail.php");
require("AttachmentMail.php");
require("Multipart.php");

$to = "[email protected]"; 
$addTo = "[email protected]"; 
$msgOK = "Email enviado";
$msgFAILED = "Email não foi enviado";
$subject = $message = "Nothing";

/**
 * Enviar em varios formatos
 * Envio 1: Prioridade Alta e conteúdo em HTML (Já contem as tags <html>)
 * Envio 2: Prioridade Normal e conteúdo em HTML (não contém as tags <html>)
 * Envio 3: Prioridade Baixa e conteúdo em texto simples
 */
$mail = new Mail($to, $subject, "", "[email protected]");

$mail->setBodyHtml("<h1>".$message."</h1>");
$mail->setPriority(ABSTRACTMAIL_HIGH_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail->resetHeaders();
$mail->setHtml("<h1>".$message."</h1>");
$mail->setPriority(ABSTRACTMAIL_NORMAL_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail->resetHeaders();
$mail->setBodyText($message);
$mail->setPriority(ABSTRACTMAIL_LOW_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;
/**/

/**
 * Enviar emails em varios formatos COM ANEXO
 * Envio 1: Prioridade Alta e conteúdo em HTML (Já contem as tags <html>)
 * Envio 2: Prioridade Normal e conteúdo em HTML (não contém as tags <html>)
 * Envio 3: Prioridade Baixa e conteúdo em texto simples
 */
$mail2 = new AttachmentMail($to, $subject, "", "[email protected]");

$mp1 = new Multipart("caminho/imagem.jpg");
$mail2->addAttachment($mp1);
$mail2->addAttachment(new Multipart("caminho/outra_imagem.gif"));

$mail2->addTo($addTo);
$mail2->setBodyHtml("<h1>".$message."</h1>");
$mail2->setPriority(ABSTRACTMAIL_HIGH_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail2->resetHeaders();
$mail2->setHtml("<h1>".$message."</h1>");
$mail2->setPriority(ABSTRACTMAIL_NORMAL_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail2->resetHeaders();
$mail2->setBodyText($message);
$mail2->setPriority(ABSTRACTMAIL_LOW_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;
/**/
?>
O exemplo acima, faz uso das 2 modalidades com ou sem ANEXO e com prioridades diferentes e conteúdos, bastando ajustar conforme a sua necessidade. Em PHP 5 Mail.php
<?php

require_once("AbstractMail.php");

/**
 * Class to send simple emails in Text and HTML formats
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class Mail extends AbstractMail {

    public function __construct($to, $subject, $fromName="", $fromMail="") {
        parent::__construct($to, $subject, $fromName, $fromMail);
    }

    public function setBodyHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = "";
        $this->body .= "<html><head>";
        $this->body .= "<meta http-equiv=Content-Type content=\"text/html; charset=".$charset."\">";
        $this->body .= "</head><body>";
        $this->body .= nl2br($html)."";
        $this->body .= "</body></html>";
    }
    
    public function setHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = nl2br($html)."";
    }

    public function setBodyText($text) {
        $this->contentType = "text/plain";
        $this->charset = "";
        $this->body = $text;
    }

    public function send() {
        $this->addHeader("MIME-Version: 1.0");
        $this->addHeader("X-Mailer: RLSP Mailer");
        $this->addHeader("X-Priority: ".$this->priority);
        $this->addHeader($this->createMessageHeaders($this->contentType, $this->charset));
        $headers = $this->buildHeaders();
        return mail($this->buildTo(),
                    $this->subject,
                    $this->body,
                    $headers);
    }
}
?>
Attachment.php
<?php

require_once("AbstractMail.php");

/**
 * Class to send emails with attachments in Text and HTML formats
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class AttachmentMail extends AbstractMail {

    private $uidBoundary;
    
    private $delimiter;
    
    private $contentTransferEncode = "7bit";

    private $attachment = array();

    public function __construct($to, $subject, $fromName="", $fromMail="") {
        // Create a unique id boundary
        $this->uidBoundary = "_".md5(uniqid(time()));
        $this->delimiterBoundary = "--".$this->uidBoundary.self::CRLF;

        parent::__construct($to, $subject, $fromName, $fromMail);
    }

    public function setBodyHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = $this->createMessageHeaders("text/html",$charset);
        $this->body .= "<html><head>";
        $this->body .= "<meta http-equiv=Content-Type content=\"text/html; charset=".$charset."\">";
        $this->body .= "</head><body>";
        $this->body .= nl2br($html)."";
        $this->body .= "</body></html>";
        $this->body .= self::CRLF.self::CRLF;
    }
    
    public function setHtml($html, $charset="iso-8859-1") {
        $this->contentType = "text/html";
        $this->charset = $charset;
        $this->body = $this->createMessageHeaders("text/html",$charset);
        $this->body .= nl2br($html)."".self::CRLF.self::CRLF;
    }

    public function setBodyText($text) {
        $this->contentType = "text/plain";
        $this->charset = "";
        $this->body = $this->createMessageHeaders("text/plain");
        $this->body .= $text.self::CRLF.self::CRLF;
    }
    
    protected function createMessageHeaders($contentType, $encode="") {
        $out = $this->delimiterBoundary;
        $out .= parent::createMessageHeaders($contentType, $encode);
        $out .= "Content-Transfer-Encoding: ".$this->contentTransferEncode.self::CRLF.self::CRLF;
        return $out;
    }
    
    public function addAttachment($part) {
        $this->attachment[] = $part;
    }

    public function send() {
        $this->addHeader("MIME-Version: 1.0");
        $this->addHeader("X-Mailer: Attachment Mailer ver. 1.0");
        $this->addHeader("X-Priority: ".$this->priority);
        $this->addHeader("Content-type: multipart/mixed;".self::CRLF.chr(9)." boundary=\"".$this->uidBoundary."\"".self::CRLF);
        $this->addHeader("This is a multi-part message in MIME format.");
        $headers = $this->buildHeaders();
        return mail($this->buildTo(),
                    $this->subject,
                    $this->body.$this->createAttachmentBlock(),
                    $headers);
    }
    
    private function createAttachmentBlock() {
        $block = "";
        
        if (count($this->attachment) > 0) {
            $block .= $this->delimiterBoundary;
            for ($i = 0;$i < count($this->attachment);$i++) {
                $block .= $this->attachment[$i]->getContent();
                $block .= $this->delimiterBoundary;
            }
        }
        return $block;
    }
}
?>
AbstractMail.php
<?php
/**
 * Abstract class used for email sender implementation classes
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
abstract class AbstractMail {
    
    const CRLF = "\n";
    
    const HIGH_PRIORITY = 2;
    const NORMAL_PRIORITY = 3;
    const LOW_PRIORITY = 4;
    
    protected $to = array();
    protected $fromName;
    protected $fromMail;
    protected $subject;
    
    protected $contentType;
    protected $charset;
    
    protected $priority = 2;
    
    protected $headers = array();
    protected $body;

    public function __construct($to, $subject, $fromName="", $fromMail="") {
        $this->to[] = $to;
        $this->subject = $subject;
        $this->fromName = $fromName;
        $this->fromMail = $fromMail;
        $this->init();
    }
    
    private function init() {
        if ($this->fromName != "" && $this->fromMail != "") {
            $this->addHeader("From: ".$this->fromName." <".$this->fromMail.">");
            $this->addHeader("Reply-To: ".$this->fromName." <".$this->fromMail.">");
        } else if ($this->fromName == "" && $this->fromMail != "") {
            $this->addHeader("From: ".$this->fromMail);
            $this->addHeader("Reply-To: ".$this->fromMail);
        }
    }
    
    public function getPriority() {
        return $this->priority;
    }
    
    public function setPriority($priority) {
        $this->priority = $priority;
    }
    
    public function getContentType() {
        return $this->contentType;
    }
    
    public function getCharset() {
        return $this->charset;
    }
    
    public function addTo($mail) {
        $this->to[] = $mail;
    }

    public function addCC($mail) {
        $this->addHeader("CC:".$mail);
    }

    public function addBCC($mail) {
        $this->addHeader("BCC:".$mail);
    }

    public function addHeader($header) {
        $this->headers[] = $header;
    }
    
    protected function buildTo() {
        return implode(", ",$this->to);
    }
    
    protected function buildHeaders() {
        $headers = "";
        if (count($this->headers) > 0) {
            for ($i = 0;$i < count($this->headers)-1;$i++)
                $headers .= $this->headers[$i].self::CRLF;
            $headers .= $this->headers[$i];
        }
        return $headers;
    }
    
    protected function createMessageHeaders($contentType, $encode="") {
        $out = "";
        if ($encode != "")
            $out .= "Content-type:".$contentType."; charset=".$encode;
        else
            $out .= "Content-type:".$contentType.";";
        return $out;
    }

    public static function validateAddress($mailadresse) {
        if (!preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})/i",$mailadresse))
            return false;
        return true;
    }
    
    public function resetHeaders() {
        $this->headers = array();
        $this->init();
    }
    
    public abstract function setBodyHtml($html, $charset="iso-8859-1");

    public abstract function setHtml($html, $charset="iso-8859-1");

    public abstract function setBodyText($text);
    
    public abstract function send();
    
}
?>
Multipart.php
<?php

require_once("AbstractMail.php");

/**
 * Representation for a attachment
 *
 * @package            mail
 * @author            gustavo.gomes
 * @copyright        2006
 */
class Multipart {
    
    const DISPOSITION_ATTACHMENT = "attachment";
    const DISPOSITION_INLINE = "inline";
    
    private $content;
    
    private $disposition;
    
    public function __construct($file="",$disposition="attachment") {
        if ($file != "")
            $this->setContent($file, $disposition);
    }
    
    public function getContent() {
        return $this->content;
    }
    
    public function getDisposition() {
        return $this->disposition;
    }
    
    /**
     * Use for $dispoition "attachment" or "inline"
     * (f.e. example images inside a html mail
     * 
     * @param    file    string - nome do arquivo
     * @param    disposition    string
     * @return    boolean
     */
    public function setContent($file, $disposition = "attachment") {
        $this->disposition = $disposition;
        $fileContent = $this->getFileData($file);
        if ($fileContent != "") {
            $filename = basename($file);
            $fileType = mime_content_type($file);
            $chunks = chunk_split(base64_encode($fileContent));
            
            $mailPart = "";
            if ($fileType)
                $mailPart .= "Content-type:".$fileType.";".AbstractMail::CRLF.chr(9)." name=\"".$filename."\"".AbstractMail::CRLF;
            $mailPart .= "Content-length:".filesize($file).AbstractMail::CRLF;
            $mailPart .= "Content-Transfer-Encoding: base64".AbstractMail::CRLF;
            $mailPart .= "Content-Disposition: ".$disposition.";".chr(9)."filename=\"".$filename."\"".AbstractMail::CRLF.AbstractMail::CRLF;
            $mailPart .= $chunks;
            $mailPart .= AbstractMail::CRLF.AbstractMail::CRLF;
            $this->content = $mailPart;
            return true;
        }            
        return false;
    }
    
    private function getFileData($filename) {
        if (file_exists($filename))
            return file_get_contents($filename);
        return "";
    }
}
?>
E agora um exemplo de uso com PHP5 exemplo.php
<?php
/*
 * Created on 29/11/2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */

error_reporting(E_ALL);

require("Mail.php");
require("AttachmentMail.php");
require("Multipart.php");

$to = "[email protected]";
$addTo = "[email protected]";
$msgOK = "Email enviado";
$msgFAILED = "Email não enviado";
$subject = $message = "Nothing";

/**
 * Enviar em varios formatos
 * Envio 1: Prioridade Alta e conteúdo em HTML (Já contem as tags <html>)
 * Envio 2: Prioridade Normal e conteúdo em HTML (não contém as tags <html>)
 * Envio 3: Prioridade Baixa e conteúdo em texto simples
 */
$mail = new Mail($to, $subject, "", "[email protected]");

$mail->setBodyHtml("<h1>".$message."</h1>");
$mail->setPriority(AbstractMail::HIGH_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail->resetHeaders();
$mail->setHtml("<h1>".$message."</h1>");
$mail->setPriority(AbstractMail::NORMAL_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail->resetHeaders();
$mail->setBodyText($message);
$mail->setPriority(AbstractMail::LOW_PRIORITY);
if ($mail->send())
    echo $msgOK;
else
    echo $msgFAILED;
/**/

/**
 * Enviar em varios formatos com ANEXO
 * Envio 1: Prioridade Alta e conteúdo em HTML (Já contem as tags <html>)
 * Envio 2: Prioridade Normal e conteúdo em HTML (não contém as tags <html>)
 * Envio 3: Prioridade Baixa e conteúdo em texto simples
 */
$mail2 = new AttachmentMail($to, $subject, "", "[email protected]");

$mp1 = new Multipart("caminho/imagem.jpg");
$mail2->addAttachment($mp1);
$mail2->addAttachment(new Multipart("caminho/outra_imagem.gif"));

$mail2->addTo($addTo);
$mail2->setBodyHtml("<h1>".$message."</h1>");
$mail2->setPriority(AbstractMail::HIGH_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail2->resetHeaders();
$mail2->setHtml("<h1>".$message."</h1>");
$mail2->setPriority(AbstractMail::NORMAL_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;

$mail2->resetHeaders();
$mail2->setBodyText($message);
$mail2->setPriority(AbstractMail::LOW_PRIORITY);
if ($mail2->send())
    echo $msgOK;
else
    echo $msgFAILED;
/**/
?>

Nos 2 exemplos, você irá receber algumas mensagem e vários formatos, com e sem anexo, para decidir o melhor modelo.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

$this->fromName != "" && $this->fromMail != ""

pq o pessoal cisma em usar isto?

pq não usa um !empty?

eu sei que da no mesmo, mais fica mais bunitinho e da menos pau. :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mt interessante essas classes e mt bem explicado também..

porem comigo esta acontecendo isso:

Notice: Use of undefined constant ABSTRACTMAIL_CRLF - assumed 'ABSTRACTMAIL_CRLF' in /home/target-ti/www/mac/mail/AttachmentMail.php on line 25

Fatal error: Call to undefined method AbstractMail::abstractmail() in /home/target-ti/www/mac/mail/AttachmentMail.php on line 27

Se alguem puder dar um help ai.. ficaria mt feliz!

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

to com preguiça de ler o código mas e porque ele não encontrou a função abstractmail() ou não carregou em algum include ou tem que ler a classe e descobrir no momento to podendo não muito trabalho

Compartilhar este post


Link para o post
Compartilhar em outros sites
to com preguiça de ler o código mas e porque ele não encontrou a função abstractmail() ou não carregou em algum include ou tem que ler a classe e descobrir no momento to podendo não muito trabalho

Na realidade ele ta encontrando os arquivos, as funções, tudo direitinho mas ta dizendo que a constante ABSTRACTMAIL_CRLF está indefinida.

algo bem loko.. Será que o problema está na variavel que criei para indicar o arquivo que vai ser enviado? O que eu to fazendo é um script que gera um pdf a partir de um formulário e que depois de gerar, mande esse pdf por email. Até o momento da geração do pdf tah tudo ok mas na hora de mandar o email que ta dando erro.. Vejam a parte do codigo que pega o nome do arquivo..

$pdf->Output("Curriculo_$nome.pdf","F");

$arquivo_final = "Curriculo_".$nome.".pdf";
E na parte de envio de email..
$mail2 = new AttachmentMail($to, $subject, "", $de);

$mp1 = new Multipart($arquivo_final);
$mail2->addAttachment($mp1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade ele ta encontrando os arquivos, as funções, tudo direitinho mas ta dizendo que a constante ABSTRACTMAIL_CRLF está indefinida.

Essa informação não procede completamente hehehehe

a variável existe porém foi definida de forma incorreta como o patrick já comentou inúmeras vezes aqui no forum

sobre o erro

Fatal error: Call to undefined method AbstractMail::abstractmail() in /home/target-ti/www/mac/mail/AttachmentMail.php on line 27

a função que não foi encontrada só isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Na realidade ele ta encontrando os arquivos, as funções, tudo direitinho mas ta dizendo que a constante ABSTRACTMAIL_CRLF está indefinida.

Essa informação não procede completamente hehehehe

a variável existe porém foi definida de forma incorreta como o patrick já comentou inúmeras vezes aqui no forum

sobre o erro

Fatal error: Call to undefined method AbstractMail::abstractmail() in /home/target-ti/www/mac/mail/AttachmentMail.php on line 27

a função que não foi encontrada só isso.

Legal e alguem sabe como resolve-lo? :P:P

Já usei uns 3 scripts diferentes e nenhum deles funcionou.. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...