Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jmlavoier

Enviar email HTML com imagem

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.