jmlavoier 0 Denunciar post Postado Novembro 12, 2009 Olá, estou usando uma classe chamada Smtp para o envio do e-mail. Mas a mensagem é em HTML, a mensagem esta indo correto, o problema só é a imagem do logotipo que não esta chegando. Já tentei inserindo o endereco da imagem no servidor: "http://189.0.0.0/imagens/imagem.jpg" mas mesmo assim não funciona. Pelo que verifiquei na internet parece que precisa de identificar a imagem, não consegui entender muito bem, Analisei e tentei usar umas classes que fazem isso, mas não tive sucesso. Preciso de um Help de voces, aqui em baixo segue a classe. class Smtp{ var $conn; var $user; var $pass; var $debug; function Smtp($host){ $this->conn = fsockopen($host, 25, $errno, $errstr, 30); $this->Put("EHLO $host"); } function Auth(){ $this->Put("AUTH LOGIN"); $this->Put(base64_encode($this->user)); $this->Put(base64_encode($this->pass)); } function Send($to, $from, $subject, $msg){ $this->Auth(); $this->Put("MAIL FROM: " . $from); $this->Put("RCPT TO: " . $to); $this->Put("DATA"); $this->Put($this->toHeader($to, $from, $subject)); $this->Put("\r\n"); $this->Put($msg); $this->Put("."); $this->Close(); if(isset($this->conn)){ return true; }else{ return false; } } function Put($value){ return fputs($this->conn, $value . "\r\n"); } function toHeader($to, $from, $subject){ $header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n"; $header .= "From: <" . $from . "> \r\n"; $header .= "To: <".$to."> \r\n"; $header .= "Subject: ".$subject." \r\n"; $header .= "Date: ". date('D, d M Y H:i:s O') ." \r\n"; $header .= "X-MSMail-Priority: High \r\n"; $header .= "Content-Type: Text/HTML; charset=iso-8859-1\r\n"; return $header; } function Close(){ $this->Put("QUIT"); if($this->debug == true){ while (!feof ($this->conn)) { fgets($this->conn) . "<br>\n"; } } return fclose($this->conn); } } E aqui é o mais importante é onde eu declaro o objeto e preparo a mensagem, eu tirei boa parte do HTML e deixei somente a parte do LOGO mesmo que é minha dúvida. * Configuração da classe.smtp.php */ $host = "$param_web[smtp]"; /*host do servidor SMTP Usar localhost é a melhor maneira principalmente onde roda o cPanel, se colocar um host externo a chance de ele ser close relay é muito grande ai não vai funcionar, da erro de conexãõ*/ $smtp = new Smtp($host); $smtp->user = "$param_web[email_emitente]"; /*usuario do servidor SMTP */ $smtp->pass = "$param_web[senha_emitente]"; /* senha dousuario do servidor SMTP*/ $smtp->debug =true; /* ativar a autenticação SMTP*/ /* envia uma mensagem */ $from= "$param_web[email_emitente]"; /* seu e-mail */ $to = "$param_web[email_destino]"; /* o e-mail cadastrado*/ $subject = "Pedido Numero $numero_orc - $nome_vendedor"; /* assunto da mensagem */ $css = "<html><head> <title>Pedido n° $numero_orc</title> <style type='text/css'> #logo{ float:left; width:10px; height:100px; border:0px solid #000; } </style> </head> <body> "; // Esta div fica a imagem com o link (este link é fictício). $cab = "<div id='logo'><img src='http://189.0.0.1/imagens/imagem.jpg' /></div>"; $rodape = "</body></hmtl>"; $pagina = $css.$cab.$rodape; $smtp->Send($to, $from, $subject, $pagina); /*faz o envio da mensagem */ Espero que dê para entender. Estou no aguado,Obrigadão Compartilhar este post Link para o post Compartilhar em outros sites
.:D6:. 0 Denunciar post Postado Novembro 12, 2009 Ou, deve ser por causa do caminho da imagem http://189.0.0.1/imagens/imagem.jpg Flw Compartilhar este post Link para o post Compartilhar em outros sites
jmlavoier 0 Denunciar post Postado Novembro 12, 2009 Ou, deve ser por causa do caminho da imagem http://189.0.0.1/imagens/imagem.jpg Flw Não... não .. como eu falei no coments, o link que eu usei no exemplo é fictício, não é real. Eu inseri só para Exemplo. Mas o link correto está certo, porque quando eu insiro na barra de endereco do Browser a imagem aparece. Compartilhar este post Link para o post Compartilhar em outros sites
jpraminelli 3 Denunciar post Postado Novembro 12, 2009 o servidor é local ? pessoas de outras redes tem acesso a arquivos do servidor local ? se a imagem está no seu servidor local, quando a pessoa recebe o email , ela vai tentar acessar a imagem, se ela nao tiver permissao ela nao consegue ver a imagem. Compartilhar este post Link para o post Compartilhar em outros sites
jmlavoier 0 Denunciar post Postado Novembro 13, 2009 Não o servidor não é local jpraminelli, eu entendi, mais parece que o bloqueio não é do servidor mas sim o próprio outlook que não deixa. Eu achei um exemplo aqui que envia a imagem junto, no próprio e-mail, mas não consegui usa-la. Eu inseri e fiz as alterações necessárias no meu código mas mesmo assim não funcionou. Este codigo parece que codifica a imagem dentro da mensagem HTML. $imagem_nome="img.jpg";// endereço da imagem no seu computador $arquivo=fopen($imagem_nome,'r'); $contents = fread($arquivo, filesize($imagem_nome)); $encoded_attach = chunk_split(base64_encode($contents)); fclose($arquivo); $limitador = "_=======". date('YmdHms'). time() . "=======_"; $mailheaders = "From: americatronic@bol.com\r\n"; $mailheaders .= "MIME-version: 1.0\r\n"; $mailheaders .= "Content-type: multipart/related; boundary=\"$limitador\"\r\n"; $cid = date('YmdHms').'.'.time(); $texto=" <html> <body><CENTER> <img src=\"cid:$cid\"> <font size=6><br />blablabla </font> </body> </html> "; $msg_body = "--$limitador\r\n"; $msg_body .= "Content-type: text/html; charset=iso-8859-1\r\n"; $msg_body .= "$texto"; $msg_body .= "--$limitador\r\n"; $msg_body .= "Content-type: image/jpeg; name=\"$imagem_nome\"\r\n"; $msg_body .= "Content-Transfer-Encoding: base64\r\n"; $msg_body .= "Content-ID: <$cid>\r\n"; $msg_body .= "\n$encoded_attach\r\n"; $msg_body .= "--$limitador--\r\n"; mail("americatronic@americatronic.com.br","Assunto",$msg_body, $mailheaders); echo"Mensagem enviada"; Compartilhar este post Link para o post Compartilhar em outros sites