Ir para conteúdo

Arquivado

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

ThiagoLimah

Enviando E-mail com Imagens

Recommended Posts

Dae pessoal, preciso criar um sistema de newsletters para um sistema que tenho, mas estou encontrando dificuldade ao enviar e-mail html com imagem no corpo da mensagem. Já tentei de todas as formas mas realmente não está dando. Estou tentando usar a classe PHPMailer.

 

Código.

 

<?php
$imagem = $_POST['imagem'];
$assunto = $_POST['assunto'];
$destino = $_POST['destino'];

$numEnv = 0;

$mail = new PHPMailer();
$mail->From = "admin@focandopessoas.com.br";
$mail->FromName = "Focus RH";
$mail->IsHTML(true);

if($destino == "curriculos"){
	$query = mysql_query("SELECT * FROM curriculos WHERE ativo = 0");
}

if($destino = "empresas"){
	$query = mysql_query("SELECT * FROM empresas");
}

while($row = mysql_fetch_array($query)){
	$mail->AddAddress($row['email']);
	$numEnv = $numEnv + 1;	
}

if($fp = fopen($imagem,"rb", 0)){
	$picture = fread($fp,filesize($imagem));
	fclose($fp);
	$base64 = chunk_split(base64_encode($picture));
	$mensagem = '<img ' . "n" . 'src="data:image/jpg;base64,' . $base64 . '" alt="" />';
}

$mail->Subject  = $assunto;
$mail->MsgHTML($mensagem);

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

if ($enviado) {
	echo "<h1><center><b>$numEnv</b> mensagens enviadas com sucesso!</center></h1>";
}
else{
	echo "<b>Informações do erro:</b> <br />" . $mail->ErrorInfo;
}

?>

 

Será que aguém sabe onde estou errando? Preciso entregar este trabalho! =/

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

apenas a imagem não está aparecendo ou a mensagem não está chegando?

 

tente assim se for a mensagem.

 

$mail->Body = $mensagem;

 

ao invés de assim

 

$mail->MsgHTML($mensagem);

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem aparece sim, apenas a imagem que não.

 

Já tentei fazer uma html com o link da imagem completo tipo <img src="http://www.google.com.br/img.jpg" /> mas não está funcionando também!

 

O que pode estar errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi ;)

 

olha fiz um teste básico, no meu email chegou certinho, com imagem, teste assim para ver se funciona, se funcionar reveja o seu código ;)

 

<?php

       require("phpmailer/class.phpmailer.php");

       $mail = new PHPMailer();
       $mail->From = "seuemail@seudominio.com.br";
       $mail->FromName = "Focus RH";
       $mail->IsHTML(true);


       $mail->AddAddress("seuemail@seudominio.com.br");

       $mensagem = "<img src='http://www.elciomoraes.zip.net/images/flores02.jpg' width='200' />";

       $mail->Subject  = $assunto;
       $mail->MsgHTML($mensagem);

       $enviado = $mail->Send();

       $mail->ClearAllRecipients();
       $mail->ClearAttachments();

       if ($enviado) {
               echo "<h1><center>Mensagens enviadas com sucesso!</center></h1>";
       }
       else{
               echo "<b>Informações do erro:</b> <br />" . $mail->ErrorInfo;
       }

?>

 

Poste o resultado por favor, se deu certo ou não

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, fiz exatamente igual ao seu exemplo e me retornou esta mensagem de erro:

 

Informações do erro:
Could not instantiate mail function.

 

que você acha, estranho, será que é a versão do PHPMailer? Mas baixei a mais recente hoje mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando um e-mail válido do seu servidor?

 

nesta linha deve colocar um email existente em seu servidor

 

$mail->From = "seuemail@seudominio.com.br";

 

se este existir use ele: "admin@focandopessoas.com.br"

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, funcionou tranquilo inserindo direto no código. Agora tentei enviar o <img ... vindo de um textarea, olha como ele está imprimindo:

 

<img src=\"http://www.elciomoraes.zip.net/images/flores02.jpg\" width=\"200\" />

 

Acho que o problema está na obtenção do código pelo método post, existe algum método para tratar o html sei lá?

 

Não consigo entender porque ele coloca as \.

 

Tentei o htmlspecialchars mas não adiantou.

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido pessoal!

 

Pra quem interessa segue abaixo o código funcional.

 

<?php
$mensagem = $_POST['mensagem'];
$assunto = trim($_POST['assunto']);
$destino = trim($_POST['destino']);
$numEnv = 0;

$headers = "MIME-Version: 1.1\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Focus <admin@focandopessoas.com.br>\n";
$headers .= "Return-Path: admin@focandopessoas.com.br\n";

if($destino == "curriculos"){
	$query = mysql_query("SELECT * FROM curriculos WHERE ativo = 0");
}

if($destino == "empresas"){
	$query = mysql_query("SELECT * FROM empresas");
}

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->From = "admin@focandopessoas.com.br";
$mail->FromName = "Focus RH";
$mail->IsHTML(true);

while($row = mysql_fetch_array($query)){

	$mail->AddAddress($row['email']);
	$numEnv = $numEnv + 1;

}

$mensagem = str_replace(chr(92),"",$mensagem);

$mail->Subject  = $assunto;
$mail->MsgHTML($mensagem);

$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

if ($enviado) {
	echo "<h1><center><b>$numEnv</b> mensagens enviadas com sucesso!</center></h1>";
}
else{
	echo "<b>Informações do erro:</b> <br />" . $mail->ErrorInfo;
}

?>

 

Fiz uma espécie de gambiarra com o str_replace, percorrende a variável $mensagem e substituindo o \ por branco.

 

$mensagem = str_replace(chr(92),"",$mensagem);

 

Valeu a ajuda ae!

=)

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.