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

Alex Gotardi

Membros
  • Total de itens

    344
  • Registro em

  • Última visita

2 Seguidores

Sobre Alex Gotardi

Últimos Visitantes

2708 visualizações
  1. Desculpa Kinzinho, mas acho que to ficando retardado. Você disse: Alex Gotardi será que foi vc mesmo que criou está classe do email ? Será que foi vc = duvidar, já assinalando de forma direta porém oculta a resposta. Foi = afirmar, logo, será que foi = duvidar Portanto, a pergunta que você colocou se torna retórica, onde vc já pressupoe a resposta e coloca o sujeito da frase em uma afirmativa Seria melhor ter escrito, Alex Gotardi, foi vc mesmo que criou esta classe do email? Isso daria base para eu responder de outra forma para você! Nosso idioma não é lindo? Kinzinho, não te conheço pessoalmente, mas espero estar enganado. Mas gente marrenta nesse forum é quando o cara se acha o dono do pedaço e não aceita os contrários. E vamos encerrar por aqui. Abraços e passar bem
  2. :blink: :blink: :blink: :blink: :blink: :blink: :blink: :blink: :blink: :blink: :blink: :blink: Você leu o tutorial? no início? tem certeza do que tá falando? eu disse que foi eu? abraços
  3. # Redistribuição livre No restrictions are placed on parties from selling of giving away the software. Nenhuma restrição deverá ser colocada sobre a venda de partes do software. # Source Code Availability Disponibilidade de código fonte The software must include source code and must also allow for binary distributions when there is a well-publicized means of obtaining the source code. O software deve incluir o código fonte e deve permitir a distribuição binária também quando existir, e uma forma simples e facil de obter o código fonte. # Derived Works Obras derivadas Modifications and derived works must be allowed, and must be distributed under the same terms as the license of the original software. Modificações e trabalhos derivados serão permitidos, e deve ser distribuído sob os mesmos termos como a licença do software original. # Integrity of the Authors Source Code Integridade do Código Fonte Autores The distribution of modified source code must be allowed although restrictions to ensure the possibility to distinguish the original source code from the derived works are tolerated. For example, the possibility of using different software names. A distribuição do código fonte modificado deve ser permitido, embora restrições para assegurar a possibilidade de diferenciar o original o código-fonte do derivado obras são toleradas. Por exemplo, a possibilidade de utilização de software diferentes nomes. # No Discrimination Against Persons or Groups Nenhuma discriminação contra pessoas ou grupos The license must not discriminate against any person or group of persons. A licença não deve discriminar contra qualquer pessoa ou grupo de pessoas. # No Discrimination Against Fields of Endeavor Nenhuma discriminação de campos de Empreendimento The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research. A licença não deve restringir ninguém de fazer uso do programa em alguma área específica. Por exemplo, ela não pode restringir o programa de ser usado em uma empresa, ou de ser usado para pesquisa genética. # Distribution of License Distribuição de Licença The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties. Os direitos inerentes ao programa devem aplicar-se a todos a quem o programa é redistribuído, sem a necessidade de execução de uma licença adicional por aquelas partes. # License Must Not Be Specific to a Product Licença não pode ser específica para um produto The rights given by the license must not be different for the original distribution and any other one even when it takes place in a totally different context. Os direitos conferidos pela licença não deve ser diferente para a distribuição original e qualquer outro, mesmo quando ele ocorre em um contexto totalmente diferente. # License Must Not Contaminate Other Software Licença não deve contaminar outros softwares The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software. A licença não deve colocar restrições em outro software que é distribuído juntamente com o software licenciado. Por exemplo, a licença não pode insistir que todos os outros programas distribuídos na mesma mídia deve ser open-source software. Conforme as informações acima, retiradas do site da própria OSCOMMERCE http://www.oscommerce.com/about/opensource Você poderá vender o software, mas deverá disponibilizar o código fonte junto. Também deverá permitir que qualquer pessoa baixe o código-fonte do sistema. Você não pode sublicenciar, ou obrigar alguém a adquirir outra licença que não a GNU. Vejo diversos problemas na forma que distribui seu software. No site, que aliás está fora (manutenção, acho ;)), não existe como baixar o fonte. Você me obriga a pagar um valor mensal por usar um sistema (sublicenciamento) ou está me forçando a comprar uma nova licença (essa é a modalidade que vc tem usado). O ideal seria que, você, ao trabalhar com OsCommerce, oferecesse o sistema, porém, ganhasse na mão de obra, instalação, customização, já que possui o knowhow para isso. Não pode pegar uma licença GNU e fazer o que quiser. Embora, possa copiar, redistribuir e modificar, vc não é o dono do sistema. Abraços e pense melhor antes de oferecer algo ilegal. Adeque-se!
  4. PHP, ASP, ColdFusion, HTML, javascript, vbscript, nenhum vai acessar nada no HD do cliente, pois isso seria uma brecha de segurança. Não existe nenhum comando PHP e nunca vai existir que faça isso, pois ele executa no servidor e não no cliente. A solução é vc pegar o Delphi e criar um controle ActiveX (que o usuário deverá instalar), ai sim, poderá fazer isso, mas recomendo não usar a PASTA windows, pois em ambiente terminal -> servidor não irá funcionar, pois o usuário não terá permissão de escrita na pasta, nem seu software. Então, recomendo gravar no Registro do windows, ai te pergunto, e se for linux??? Então, o java seria ideal. Pense assim, se for uma intraweb, com ambiente controlado e administrado por vc, pode até funcionar isso ai, senão, pode esquecer. Uma alternativa, é vc obrigar o usuário a executar o software antes de acessar seu sistema web. O que esse software pode fazer? simples. O software deve pegar alguns dados do cliente, gerar uma chave e exibir para ele. Ao mesmo tempo que envia estes dados, atraves de um POST, para um arquivo PHP armazenar, digamos por uns 10 minutos. Se não houver acesso do usuário nesse meio tempo, expira. Quando o usuario for logar, ele deve: digitar o usuario, senha e a chave que foi informada. E o PHP vai consultar se a chave é valida. entendeu? O Banco do brasil usa um sistema parecido para os seus correntistas. Procure no Banco do Brasil e veja se te dá alguma idéia de funcionamento. Abraços
  5. ué, vc está dividindo o conteúdo em palavras e quer achar frase?? esquisito o ideal é usar Expressoes Regulares ai o uso de preg_match seria ideal para pesquisar no conteúdo. http://www.php.net/preg_match
  6. Tá ai, testado já http://rapidshare.com/files/94579077/mail_anexo.zip.html abraços
  7. Ele está dizendo que vc não possui o arquivo Main.php no diretório
  8. seria interessante deixar esse tutorial como fixo para ajudar
  9. Não precisa fazer do zero, tai a solução, com base no tutorial que escrevi http://forum.codigofonte.net/index.php?showtopic=10158 Depois de ter os quatro arquivos do tutorial, levei em conta que vc está usando o php5 <?php //corrigido: as variaveis estavam como "mail2" e é "mail" error_reporting(E_ALL); require("Mail.php"); require("AttachmentMail.php"); require("Multipart.php"); $nome = $_POST['nome']; $email = $_POST['email']; $comentario = $_POST['comentario']; $amigos = array( array($_POST['amigo_1'], $_POST['email_1']), array($_POST['amigo_2'], $_POST['email_2']), array($_POST['amigo_3'], $_POST['email_3']) ); $msgOK = "Sua mensagem foi enviada com sucesso"; $msgFAILED = "Email não foi enviado"; $assunto = "Recebi, gostei e estou enviando para você"; $mail = new AttachmentMail("", $assunto, "", $email); $mp1 = new Multipart("../images/form.swf"); $mail->addAttachment($mp1); foreach($amigos as $x) { $mail->addTo($x[1]); } $mail->setBodyText($comentario); $mail->setPriority(ABSTRACTMAIL_NORMAL_PRIORITY); if ($mail->send()) $msg = $msgOK; else $msg = $msgFAILED; echo "<script>location.href='index.html'; alert('$msg');</script>"; ?>
  10. Tutorial http://forum.codigofonte.net/index.php?showtopic=10158
  11. 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.phpAttachmentMail.phpMail.phpMultipart.phpAbstractMail.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
  12. Nessa linha teria que ter uma quebra no final? $headers .= "From: $email"; tipo assim $headers .= "From: $nome <$email>\n";
  13. Calma gente Patrick, gostaria de lembrar algumas regras do fórum 4. Algumas observações Importantes 4.1 O fórum é aberto a todos os participantes que desejam fazer parte da comunidade CódigoFonte.net, incluindo também crianças. Como descrito nos termos cadastrais, é proibido: 4.1.1 Postar mensagens que contenham palavras de baixo calão, chulas, vulgares ou que demonstrem a má-educação do membro; colocar qualquer mensagem abusiva, obscena, vulgar, insultuosa, de ódio, ameaçadora, sexualmente tendenciosa ou qualquer outro material que possa violar qualquer lei aplicável 4.1.2 Esta regra é muito importante para manter a boa organização e o bom andamento do fórum. Quaisquer mensagens que desrespeitem estas regras, elas serão excluídas ou editadas pelos moderadores e administradores do fórum sem aviso. 4.6 Bem como você é objetivo ao divulgar sua dúvida, tente ser mais ainda ao responder a uma dúvida, seja o mais educado possível, não escreva coisas que humilhe o membro, incluia todos os detalhes técnicos possíveis para auxiliar ainda mais o membro do Fórum. Assim, todos têm condições iguais de entender a sua resposta e de aprender com você. Quanto a dúvida, RJ Rick, explica melhor o que acontece. Uma dica Rick, otimiza a imagem do seu site, ela tá com quase 1,5mb e embora o site todo seja texto, essa imagem arrebenta a visita e espanta todos. Diminui ela para o tamanho que deseja usar em seu site em algum programa gráfico e envia para o servidor. Verá a diferença.
×
×
  • Criar Novo...