Envio o email HTML mas a imagem não aparece embutida / inline / no corpo do email. Ela vai como anexo. Utilizo a classe PHP Mailer. Todas as pastas estão corretas.
Eis o código:
<?php
require("class.phpmailer.php");
$texto = $_POST['mensagem'];
// Inicia a classe PHPMailer
$mail = new PHPMailer();
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "mail.MEUHOST.COM"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Port = 25; // Porta
$mail->Username = 'teste2@MEUHOST.COM'; // Usuário do servidor SMTP
$mail->Password = 'teste2'; // Senha do servidor SMTP e desta conta de email
// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = "no-reply@MEUHOST.COM"; // Seu e-mail
$mail->FromName = "MINHA EMPRESA"; // Seu nome
// Define o(s) destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$destinatarios = explode(",", $_POST['destinatarios']);
$total_dest = sizeof ($destinatarios);
for ( $i = 0; $i < $total_dest; $i++) {
$destinatarios[$i] = trim ($destinatarios[$i]);
if ( PHPMailer::ValidateAddress ( $destinatarios[$i] ) == true ) {
echo "Destinatario VALIDO: '" . $destinatarios[$i] . "'<br />";
$mail->AddBCC( $destinatarios[$i] );
} else echo "Destinatario INVALIDO: '" . $destinatarios[$i] . "'<br />";
}
// Define os dados técnicos da Mensagem
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
// Define a mensagem (Texto e Assunto)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$assunto = $_POST['assunto'];
$mail->Subject = $assunto; // Assunto da mensagem
// Necessário substituir \" por ' pois o CKEditor 3.x
// adiciona este caracter extra
$texto = str_replace ( "\\\"", "'", $texto );
// obtém as imagens do texto e as coloca em um arranjo.
$texto_modificado = $texto;
$array_imagens = array ();
$chave_inicio = "src='";
do {
// retorna um INT mas na documentacao oficial ele compara com um BOOLEAN
$achou = strpos ( $texto_modificado , $chave_inicio );
if ( $achou !== false ) {
$inicio = ((integer) $achou);
$inicio_imagem = $inicio + strlen ( $chave_inicio );
$chave_fim = ".jpg'";
$pos = strpos ( $texto_modificado , $chave_fim, $inicio_imagem );
if ( $pos === false ) $chave_fim = ".gif'";
$pos = strpos ( $texto_modificado , $chave_fim, $inicio_imagem );
if ( $pos === false ) $chave_fim = ".png'";
$pos = strpos ( $texto_modificado , $chave_fim, $inicio_imagem );
if ( $pos === false ) $chave_fim = ".bmp'";
$pos = strpos ( $texto_modificado , $chave_fim, $inicio_imagem );
if ( $pos === false ) $chave_fim = ".jpeg'";
$pos = strpos ( $texto_modificado , $chave_fim, $inicio_imagem );
$fim = $pos + strlen ( $chave_fim );
$fim_imagem = $fim - 1;
$array_imagens[] = substr ( $texto_modificado , $inicio_imagem, ($fim_imagem - $inicio_imagem) );
$texto_modificado = substr_replace ( $texto_modificado, " ", $inicio, ($fim - $inicio) );
}
} while ( $achou !== false );
$total_imagens = sizeof($array_imagens);
// Content IDs
$cids = array ();
for ( $contador = 0; $contador < $total_imagens; $contador++ ) {
// gera os IDs das imagens para se serem posicionados no texto da mensagem
$cids[] = $contador . "__" . date('YmdHms') . "." . time();
echo "Imagem : '" . $array_imagens [$contador] . "'<br />";
echo "CID: " . $cids[$contador] . "<br /><br />";
}
echo "\n\n";
echo "TEXTO MODIFICADO: " . $texto . "<br />";
// Substitui imagem a imagem pelo seu ID no texto recebido
for ( $contador = 0; $contador < $total_imagens; $contador++ ) {
$texto = str_replace ( $array_imagens [$contador], "cid:" . $cids [$contador], $texto );
// $mail->AddEmbeddedImage( "/home/MEUUSER/public_html" . $array_imagens [$contador], $cids [$contador] );
$mail->AddEmbeddedImage( "/home/MEUUSER/public_html" . $array_imagens [$contador],
$cids [$contador],
"figura_" . $contador . ".jpg",
"base64",
"image/jpeg" );
}
$body = "<html>\r\n";
$body .= "<head>\r\n";
$body .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />";
$body .= "</head>\r\n";
$body .= "<body>\r\n";
$body .= $texto . "\r\n";
$body .= "</body>\r\n";
$body .= "</html>\r\n\n";
$mail->AltBody = 'O seu sistema de recepção de email não suporta HTML';
// $mail->Body = $body;
$mail->MsgHTML ($body);
// Define os anexos
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Verificações do anexo 1
$anexo_1 = false;
if ( isset($_FILES["anexo_1"]) && $_FILES["anexo_1"]!=null && $_FILES["anexo_1"]["size"] > 0 ) {
/*if (($_FILES["anexo_1"]["type"] == "image/gif")
|| ($_FILES["anexo_1"]["type"] == "image/jpeg")
|| ($_FILES["anexo_1"]["type"] == "image/pjpeg")) {*/
$anexo_1 = true;
//}
}
// Verificações do anexo 2
$anexo_2 = false;
if ( isset($_FILES["anexo_2"]) && $_FILES["anexo_2"]!=null && $_FILES["anexo_2"]["size"] > 0 ) {
/*if (($_FILES["anexo_2"]["type"] == "image/gif")
|| ($_FILES["anexo_2"]["type"] == "image/jpeg")
|| ($_FILES["anexo_2"]["type"] == "image/pjpeg")) {*/
$anexo_2 = true;
//}
}
// Verificações do anexo 3
$anexo_3 = false;
if ( isset($_FILES["anexo_3"]) && $_FILES["anexo_3"]!=null && $_FILES["anexo_3"]["size"] > 0) {
/*if (($_FILES["anexo_3"]["type"] == "image/gif")
|| ($_FILES["anexo_3"]["type"] == "image/jpeg")
|| ($_FILES["anexo_3"]["type"] == "image/pjpeg")) {*/
$anexo_3 = true;
//}
}
$total = 0;
if ( $anexo_1 == true ) $total += $_FILES["anexo_1"]["size"];
if ( $anexo_2 == true ) $total += $_FILES["anexo_2"]["size"];
if ( $anexo_3 == true ) $total += $_FILES["anexo_3"]["size"];
echo "TOTAL DOS UPLOADS: " . $total . " KB<br/>";
if ( $total < 20000000 ) // em Kb
{
if ( ($anexo_1==true && $_FILES["anexo_1"]["error"] > 0) ||
($anexo_2==true && $_FILES["anexo_2"]["error"] > 0) ||
($anexo_3==true && $_FILES["anexo_3"]["error"] > 0) )
{
echo "Código de erro: " . $_FILES["anexo_1"]["error"] . "; " . $_FILES["anexo_2"]["error"] . "; " . $_FILES["anexo_3"]["error"] . "<br />";
}
else
{
if ( $anexo_1 == true ) {
move_uploaded_file($_FILES["anexo_1"]["tmp_name"],
"upload/" . $_FILES["anexo_1"]["name"]);
$mail->AddAttachment("upload/" . $_FILES["anexo_1"]["name"], $_FILES["anexo_1"]["name"]); // Insere um anexo
}
if ( $anexo_2 == true ) {
move_uploaded_file($_FILES["anexo_2"]["tmp_name"],
"upload/" . $_FILES["anexo_2"]["name"]);
$mail->AddAttachment("upload/" . $_FILES["anexo_2"]["name"], $_FILES["anexo_2"]["name"]); // Insere um anexo
}
if ( $anexo_3 == true ) {
move_uploaded_file($_FILES["anexo_3"]["tmp_name"],
"upload/" . $_FILES["anexo_3"]["name"]);
$mail->AddAttachment("upload/" . $_FILES["anexo_3"]["name"], $_FILES["anexo_3"]["name"]); // Insere um anexo
}
}
}
else
{
echo "Tipos inválidos dos arquivos carregados ou o tamanho somado passa de 20 MB.<br />";
}
// Envia o e-mail
$enviado = $mail->Send();
// Exibe uma mensagem de resultado
if ($enviado) {
// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();
echo "E-mail enviado com sucesso!<br />";
echo("<script language='javascript'>");
echo(" alert('Email enviado com sucesso.\\n\\nRedirecionando....');");
// echo(" location = 'maladireta.php';");
echo("</script>");
exit;
} else {
// Limpa os destinatários e os anexos
$mail->ClearAllRecipients();
$mail->ClearAttachments();
echo "Não foi possível enviar o e-mail.<br /><br />";
echo "<b>Informações do erro:</b> <br />" . $mail->ErrorInfo;
echo("<script language='javascript'>");
echo(" alert('Não foi possível enviar o e-mail.\\n\\nRedirecionando....');");
//echo(" location = 'maladireta.php';");
echo("</script>");
exit;
}
?>
Pergunta
Peter_
Oi pessoal,
Envio o email HTML mas a imagem não aparece embutida / inline / no corpo do email. Ela vai como anexo. Utilizo a classe PHP Mailer. Todas as pastas estão corretas.
Eis o código:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.