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

Alex Gotardi

Membros
  • Total de itens

    344
  • Registro em

  • Última visita

Tudo que Alex Gotardi postou

  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.
  14. <_< <_< <_< Otimizando o código if ($cores<=0){ $perda2=1; $tinta=0; } else { $tinta=1.28; $perda = $quantidade / $modelos; if ($perda <= 5){ $perda2 = 40; } else if ($perda <= 10){ $perda2 = 25; } else if ($perda <= 80){ $perda2 = 10; } else if ($perda <= 100){ $perda2 = 6; } else { $perda2 = 4; } } $embalagem = ($qtdCaixas<=0) ? 0 : 0.14; Agora, dê uma olhada no valor das variaveis $cores e $qtdCaixas quando chegam nesse bloco de código. Pode ser que esteja ai o problema, elas estão vindo com valor 0 (zero)
  15. a extensão .doc tem várias formas de composição Se for igual ao DOC do WodPad (RTF) então, a estrutura é semelhante ao HTML, mas outros códigos e o PHP vai editar na boa. Basta seguir os padrões do documento. Se for DOC do Microsoft Word, OpenOffice e outros, eles injetam código binário no arquivo, como configurações de margem, pagina, indices e outras coisas. Então o PHP terá problemas para editar isso. Se existe classe que faça esse trabalho, desconheço. Portanto, dependendo da alteração que você deseja fazer nos arquivos, pense em usar o proprio Word com macros, ou VBA. Deve ter algum grupo de programadores dessa linguagem neste forum que podem te ajudar. Abraços
  16. Patrick, nao quero começar aqui uma discussão infundada e infantil. Mas acho que vc discordou do vitinho e depois reafirmou o que ele falou. O que entendi dele é que o uso de tables deixaria o código sujo. Somente isso. O uso de CSS acredito que seja aparte, como sabemos que é mister de ser usado. Todavia, o uso de Tables realmente emporcalha o código e acrescenta linhas desnecessários, que deveriam ser otimizadas. por exemplo Poderia ser substituido por um E um CSS Com certeza o código fica mais leve, e economiza em banda no final das contas. PS: Não entendi o lance do concordar ou discordar comigo. Mas tudo bem. O importante é que as pessoas tirem suas dúvidas e não que fiquem com mais né Abraços
  17. Zeca, o xHTML é um HTML com padrões a serem seguidos Não sei seu conhecimento acerca de HTML, mas só para te introduzir no mundo do XHTML. Toda vez que tiver uma tag unica HR INPUT BR e outras do genero que não precisam usar / para fechar, como no caso das div <DIV></DIV> então essas úncias vc coloca <br /> isso é só um exemplo, vc também tem que lembrar que para o usuário final, não interessa se vc tá usando flash, HTML, xml, javascript, desde que ele clique e o conteúdo apareceça em menos de 5 segundos na tela, pelo menos algo tem que aparecer. Já dá a sensação a ele de algo acontecendo. Vou explanar um pouco, digamos o uso de TABLE Quando o PHP processa o código, ele junta as respostas dos ECHO com o HTML e envia para o navegador, mas o navegador não mostra para o usuário nada que estiver dentro de um TABLE enquanto ele não encontrar o </TABLE> ENTENDEU? Então, por isso que a galera usa CSS com DIV. Span. e outros do genero. Mas já que vc quer iniciar no mundo do PHP. Vou te dar umas dicas de como usar o XHTML e o SMARTY No principio, para quem não gosta de usar padrões, acha que é perda de tempo, mas quando o seu sistema tiver mais de 5000 arquivos com código *isso mesmo, cinco mil* então vc vai entender. Primeiramente, guarde esse tutorial, é da W3C que dita as regras da internet visual Depois, com ele em mãos, vamos partir para o SMARTY. Baixe a versão mais recente. E o manual em portugues no mesmo site. Para vc entender como usar o Smarty, é bem simples, o Smarty é um sistema feito em php, onde vc dá para ele alguns comandos no XHTML que serão substituidos por respostas do PHP. Dica: O melhor de tudo no uso do smarty é o fato dele colocar o conteúdo em cache Digamos que vc tenha uma lista de fornecedores, que são extraidos do banco de dados pelo php. Toda vez que vc exibe essa pagina, o PHP vai no banco de dados e monta a lista em XHTML e envia para o navegador, se estiver usando o smarty, e a lista for sempre a mesma, então ele deixa um cache desse resultado já pronto, e simplesmente envia para o navegador. Tutoriais: Boa sorte na empreitada, lembre-se, se vai começar algo, comece direito, não entre nessa de POG (Programação orientada a gambiarra), senão, vc só vai fazer bico e trabalhar em empresa de quinta categoria. Abraços, precisando de ajuda. Só mandar.
  18. Tudo depende. Nem todo programador é bom designer. Você deve pensar sempre de 3 formas. Código é código, não deve ter HTML, XML, nada de layout, apenas código, deixe o layout para outro arquivo. Um exemplo simples, seria o uso do Smarty Engine. http://smarty.php.net Claro que você deve pensar no seguinte, velocidade de seu sistema. O PHP faz o trabalho, mas e a resposta para o usuário? Como está? Para vc que está começando, penso que XHTML seria o melhor, pois é mais padronizado, além de ser lido mais rápido pelos navegadores, aumentando a velocidade de carragamento de sua página para o usuário final. Então, penso que vc deve usar o trio PHP + SMARTY + XHTML
  19. Tem uns problemas nesse seu código: 1) de onde vem esse array $nome_colab? Não sei seu nível de conhecimento sobre PHP mas vamos partir do principio que vc é iniciante. Você possui duas variaveis que armazenam o nome ou código do colaborador e a matricula $nome_colab = $_GET['nome_colab']; $matricula = $_GET['matricula']; Que você obtem pelo método GET. Logo em seguida vc faz uma consulta ao banco de dados procurando pelo nome_colab? e matricula? (de novo?) dai vc tenta escrever o conteúdo como se fosse um array (matriz), apartir das 2 variaveis acima, mas elas não são array (uma é texto, string) e a outra (inteiro) Se penso que vc quer pegar os dados dessa consulta, então faltou vc mandar o PHP colocar os resultados em um array Deve ficar assim seu código <?php include "verifica.php"; include "configuracao3.php"; $con = mysql_connect ("$host", "$login_db", "$senha_db"); mysql_select_db($database); $nome_colab = $_GET['nome_colab']; // se vc não vai usar essa informação, remove ela que é lixo. $matricula = int_val(abs($_GET['matricula'])); //int_val = retorna apenas números inteiros, abs = positivo (questão de segurança) $sql = mysql_query("SELECT nome_colab, matricula FROM avaliacoes WHERE matricula = ". $matricula) or die (mysql_error()); $dados = mysql_fetch_array($sql); //extrai os dados retornados e coloca em um array ($dados) //lembre-se que se o banco de dados retornar mais de 1 linha de registro, //o código acima irá pegar apenas a primeira. ?> <html> <head> <title></title> </head> <body> Nome: <input type="text" name="nome_colab" value="<?php echo $dados['nome_colab'] ?>" /> <p> Matrícula: <input type="text" name="matricula" value="<?php echo $dados['matricula'] ?>" /> </body> </html> Acho que é isso, boa sorte
  20. Tudo depende de padrões a serem seguidos. Se o valor dessa tal variavel sempre tiver 4 digitos como decimal Então, você pode trabalhar esse valor da seguinte forma. <? $n = 2540500; //valor original $n_decimais = 4; //numero de decimais na variavel $decimais = substr($n, strlen($n)-$n_decimais, $n_decimais); //extraindo os 4 ultimos digitos $inteiros = substr($n, 0, strlen($n)-$n_decimais); //extraindo o restante dos digitos echo $inteiros.','.substr($decimais, 0, 2); // deve ter milhares de formas de fazer. Mas, essa funciona. ?>
  21. usa a biblioteca para php ADODB PROCURA NO SAO GOOGLE
  22. Nem li seu código, mas a idéia não é essa sua. O correto é ter estatisticas, ou seja, no link ter algo que identifique o email eu usaria assim, ao enviar um eCard, registraria em uma tabela o email para onde foi, nessa tabela geraria um ID (código sequencial), que eu enviaria como complemento do link Digamos que enviou um cartão para [email protected], ao registrar, receberia o ID 1365 (por exemplo) http://www.site.com.br/cartoes/amor/001.php?id=1365 Quando o cliente acessar esse arquivo, vc completa os dados do registro no banco de dados com a data e a hora da visita, e o número de visitas sua tabela ficaria por exemplo assim tb_ecards ID | EMAIL | DATA | VISITAS o comando para atualizar seria mysql_query("UPDATE tb_ecards SET data = NOW() AND visitas = visitas + 1 WHERE id = '". inval($_GET['id'])); O caminho é esse, para saber se a pessoa apenas leu o email, vc pode inserir um arquivo pixel.gif( 1x1 ) vindo de algum php que registra o email. Procura dar uma estudada em sistemas de email marketing que vc vai tirar boas idéias para o ecard abraços -------- tava esquecendo, cuidado com essa forma de envio, pq poderia abrir seu servidor para algum spammer usar ok
×
×
  • Criar Novo...