Ir para conteúdo

POWERED BY:

Arquivado

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

blockmonork

Email com imagem anexa

Recommended Posts

Pessoal, tenho o seguinte problema:

 

O script abaixo deve enviar o resultado de um formulário em flash preenchido num site. O email que o php envia, deve ir com a formatação html e com uma imagem "logo.gif" no topo.

 

O script está funcionando perfeitamente, porém, a imagem anexada, não aparece no local onde deveria. A imagem chega no rodapé do email, e no lugar onde ela deveria estar (no topo do doc), aparece um quadrado com um "X" no meio, como se fosse aqueles links quebrados.

 

Alguém poderia me dizer onde estou errando?

 

Sou novato em php.

 

Obrigado a todos pela atenção.

 

 

 

<?php

 

$boundary = strtotime('NOW');

$imagem = '<img src= "logo.gif">'; // imagem de 600x 150 px

$headers = "From: EMPRESA\n";

$headers .= "MIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\n";

$qualidade = "email@dominio.com";

$destinatarios = "$qualidade" . ", " ;

$destinatarios .= "$pmel";

 

$msg = "--" . $boundary . "\n";

$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

$msg .= "Content-Transfer-Encoding: quoted-printable\n\n";

 

$msg .= '

<html>

<head>

<title>Certificado de Inspeção Interno</title>

</head>

<body>

<p>Certificado de Inspeção Interno</p>

<table>

<tr>

<th> '.$imagem.'</th>

</tr>

<tr>

<td>Certificado N°:</td><td>'.$pnum.'</td>

</tr>

<tr>

<td>Cliente:</td><td>'.$pcli.'</td>

</tr>

<tr>

<td>Especificações:</td><td>'.$pesp.'</td>

</tr>

<tr>

<td>Peso:</td><td>'.$ppes.'</td>

</tr>

<tr>

<td>Fardos:</td><td>'.$pfar.'</td>

</tr>

<tr>

<td>Data:</td><td>'.$pdt1.'</td>

</tr>

<tr>

<td>Nota Fiscal N°:</td><td>'.$pnot.'</td>

</tr>

<tr>

<td>Foram efetuados os seguintes testes:</td><td>'.$ptes.'</td>

</tr>

<tr>

<td>Observações Complementares:</td><td>'.$pobs.'</td>

</tr>

<tr>

<td>GQT:</td><td>'.$pgqt.'</td>

</tr>

<tr>

<td>Data:</td><td>'.$pdt2.'</td>

</tr>

<tr>

<td><BR>Fim do Relatório</BR></td>

</tr>

</table>

</body>

</html>

';

 

$msg .= "--" . $boundary . "\n";

$msg .= "Content-Transfer-Encoding: base64\n";

$msg .= "Content-Disposition: attachment; filename=\"logo.gif\"\n\n";

 

ob_start();

readfile("logo.gif");

$enc = ob_get_contents();

ob_end_clean();

 

$msg_temp = base64_encode($enc). "\n";

$tmp[1] = strlen($msg_temp);

$tmp[2] = ceil($tmp[1]/76);

 

for ($b = 0; $b <= $tmp[2]; $b++) {

$tmp[3] = $b * 76;

$msg .= substr($msg_temp, $tmp[3], 76) . "\n";

}

 

unset($msg_temp, $tmp, $enc);

mail("$destinatarios", "Certificado_de_Inspeção_Interno", $msg, $headers);

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez da src da imagem ser, por exemplo, "imagem.gif" coloca o caminho completo do seu site... "http://www.meusite.com.br/imagem.gif" que funciona =)

o que ele está fazendo é diferente.

é o formato multi-seccionado

 

 

 

blockmonork,

qual o valor da variável $imagem ??

 

hinom, desculpe, mas como sou novato em php, não sei responder a esta pergunta :/ Pelo que entendi, a var imagem guarda o endereço físico do arquivo de imagem e repassa para o método readfile. É o que entendi...

 

tiu talk, o script está funcionando, a imagem é enviada junto com o resto da mensagem para o endereço de email que é repassado para as variáveis, o que está acontecendo, é um erro na formatação do email, que chega sem a imagem na tabela superior, como vocês podem observar na var msg, é um documento html, e logo abaixo do title e body, vem uma tabela com a imagem dentro das tags, depois começa o conteúdo da mensagem mesmo (em formato de texto).

Tanto no outlook quanto em outros mails (google, yahoo, por exemplo) a imagem chega, porém ela só aparece no rodapé do documento, e no cabeçalho, onde ela deveria estar realmente, só aparece um "X" como se fosse um link quebrado.

 

Espero que possam me ajudar, tenho lido sobre php, mas ainda estou bem no inicinho, e pelo que vi, este script ainda está bem à frente do meu atual conhecimento,

 

Abraços e obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado por responder

 

precisava de uma confirmação para orientar da melhor forma

 

é preciso informar no cabeçalho que o email que está sendo enviado possui conjuntos diferentes de codificação e charset

 

escopo

 

cabeçalho

 

MIME-Version: 1.0

Content-Type: multipart/related

type="multipart/alternative";

boundary="----=_NextPart_ID"

em negrito, o ID é a identificação para as segmentações do corpo do email

no final explicarei melhor

 

corpo

 

no iníco do copo coloque:

This is a multi-part message in MIME format.

------=_NextPart_ID
Content-Type: multipart/alternative;
	boundary="----=_NextPart_ID"

------=_NextPart_ID
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable

OK TESTE 
IMASTERS FORUMS


------=_NextPart_ID
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<b>OK TESTE </b>
<br>IMASTERS FORUMS
<br><img src=cid:sample.jpg>

------=_NextPart_ID--





------=_NextPart_ID
Content-Type: image/jpeg; name="sample.jpg"
Content-Transfer-Encoding: base64
Content-ID: <sample.jpg>

AQUI O CONTENT-STREAM DA IMAGEM EM FORMATO BASE64

------=_NextPart_ID--

Compartilhar este post


Link para o post
Compartilhar em outros sites

boundary ID é o identificador, que informa qual a tag servirá como delimitador para as partes do corpo do email

 

no lugar de ID pode colocar qualquer caracter alfanumérico

 

exemplo

 

 

MIME-Version: 1.0

Content-Type: multipart/related

type="multipart/alternative";

boundary="----=_NextPart_abc123"

em todos os outros trechos utilize o mesmo valor

 

------=_NextPart_abc123"

 

 

os delimitadores abrem com

 

------=_NextPart_ID

e fecham com

 

------=_NextPart_ID--

exemplo

------=_NextPart_ID

CABEÇALHO

CONTEUDO

------=_NextPart_ID--

Compartilhar este post


Link para o post
Compartilhar em outros sites

no exemplo do escopo apresentado acima,

 

existem 2 delimitadores sem fechamento,

o primeiro, indica o índice geral do corpo

 

This is a multi-part message in MIME format.

------=_NextPart_ID
Content-Type: multipart/alternative;
	boundary="----=_NextPart_ID"

informa que o corpo do email é multiceccionado

 

"multipart/alternative"

 

apesar da informação contida no cabeçalho do email, é importante declarar no corpo também para evitar incompatibilidade com alguns servidores de email

Compartilhar este post


Link para o post
Compartilhar em outros sites

o segundo trecho, repare que o conteúdo principal do email é repetido

 

em negrito

------=_NextPart_ID

Content-Type: text/plain;

charset="utf-8"

Content-Transfer-Encoding: quoted-printable

 

OK TESTE

IMASTERS FORUMS

 

 

------=_NextPart_ID

Content-Type: text/html; charset="utf-8"

Content-Transfer-Encoding: quoted-printable

 

<b>OK TESTE </b>

<br>IMASTERS FORUMS

<br><img src=cid:sample.jpg>

 

------=_NextPart_ID--

é uma prática recomendada também para evitar servidores de emails que nao suportam html ou simplesmente bloqueiam...

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, obrigado pela atenção e, embora você tenha detalhado muito bem o código, ainda tenho problemas.

O maior deles é que eu não entendi como inserir estes códigos no cabeçalho e corpo do email :/

Desculpe pela ignorância, mas tentei "n" vezes e nenhuma deu certo.

Segue abaixo o código que eu tentei modificar de acordo com suas explicações, mas agora o email nem chega. Sei que estou fazendo algo de errado, mas não estou conseguindo identificar o erro...

Abraço.

 

<?php

// cabeçalho

 

$headers = "MIME-Version: 1.0";

$headers .= "Content-Type: multipart/related";

$headers .= 'type="multipart/alternative"';

 

boundary="----=_NextPart_a123"

 

------=_NextPart_a123 // inicio do corpo 1 text plain

This is a multi-part message in MIME format.

$headers .= "From: EMPRESA\n";

$imagem = '<img src= "logo.gif">';

$empresa = "email@dominio.com";

$destinatarios = "$empresa" . ", " ;

$destinatarios .= "$pmel";

$msg = "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

$msg .= "Content-Transfer-Encoding: quoted-printable\n\n";

$msg .= 'Content-Type: text/plain; charset="utf-8"';

$msg .="

$imagem

Certificado de Inspeção Interno

Certificado N°: ".$pnum."

Cliente: ".$pcli."

Especificações: ".$pesp."

Peso: ".$ppes."

Fardos: ".$pfar."

Data: ".$pdt1."

Nota Fiscal N°: ".$pnot."

Foram efetuados os seguintes testes: ".$ptes."

Observações Complementares: ".$pobs."

GQT: ".$pgqt."

Data: ".$pdt2."

Fim do Relatório

";

------=_NextPart_a123--

 

------=_NextPart_a123 // inicio corpo 2 html

This is a multi-part message in MIME format.

$msg .= "Content-Type: text/html; charset="utf-8"";

$msg .= "Content-Transfer-Encoding: quoted-printable";

$msg .= '

<html>

<head>

<title>Certificado de Inspeção Interno</title>

</head>

<body>

<p>Certificado de Inspeção Interno</p>

<table>

<tr>

<th> <img src=cid:logo.gif> </th>

</tr>

<tr>

<td>Certificado N°:</td><td>'.$pnum.'</td>

</tr>

<tr>

<td>Cliente:</td><td>'.$pcli.'</td>

</tr>

<tr>

<td>Especificações:</td><td>'.$pesp.'</td>

</tr>

<tr>

<td>Peso:</td><td>'.$ppes.'</td>

</tr>

<tr>

<td>Fardos:</td><td>'.$pfar.'</td>

</tr>

<tr>

<td>Data:</td><td>'.$pdt1.'</td>

</tr>

<tr>

<td>Nota Fiscal N°:</td><td>'.$pnot.'</td>

</tr>

<tr>

<td>Foram efetuados os seguintes testes:</td><td>'.$ptes.'</td>

</tr>

<tr>

<td>Observações Complementares:</td><td>'.$pobs.'</td>

</tr>

<tr>

<td>GQT:</td><td>'.$pgqt.'</td>

</tr>

<tr>

<td>Data:</td><td>'.$pdt2.'</td>

</tr>

<tr>

<td><BR>Fim do Relatório</BR></td>

</tr>

</table>

</body>

</html>

';

------=_NextPart_a123--

 

 

------=_NextPart_a123

Content-Type: image/gif; name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <logo.gif>

ob_start();

readfile("logo.gif");

$enc = ob_get_contents();

ob_end_clean();

 

$msg_temp = base64_encode($enc). "\n";

$tmp[1] = strlen($msg_temp);

$tmp[2] = ceil($tmp[1]/76);

 

for ($b = 0; $b <= $tmp[2]; $b++) {

$tmp[3] = $b * 76;

$msg .= substr($msg_temp, $tmp[3], 76) . "\n";

}

 

unset($msg_temp, $tmp, $enc);

mail("$destinatarios", "Certificado_de_Inspeção_Interno", $msg, $headers);

 

 

------=_NextPart_a123--

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo bem, sei que à primeira instância é complicado entender

 

há diversos erros na sua montagem

 

pra você ter uma idéia melhor, abra o cliente de emails "Outlook Express"

 

1- crie uma nova mensagem

 

2- escreva:

 

olá
	AQUI INSIRA UMA IMAGEM
mundo

para inserir uma imagem utilize o menu "inserir -> imagem"

é diferente de anexar uma imagem, pois ao inserir, o email será formatado

com o tipo "multipart/alternative"

 

3- envie a mensagem para algum email que possa ser baixado pelo Outlook Express

 

4- receba o email

 

 

5- ao receber o email, clique com o botão direito sobre o assunto da mensagem e clique em "propriedades"

 

6- uma caixa de diálogo aparecerá na tela, clique na aba "detalhes"

 

7- uma caixa contendo o código fonte do cabeçalho é exibida, clique no botão "exibir fonte"

 

8- uma caixa abrirá contendo o código fonte completo da mensagem recebida

 

9- analize bem e veja como o outlook express montou o cabeçalho e o corpo do email e se possível poste o código completo aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, muito obrigado pela dica e pelo interesse em me ajudar!

São pessoas como você que fazem dos fóruns um lugar tão bom para o aprendizado dos que buscam conhecimento autodidata!

 

Como você sugeriu, estou enviando abaixo o código gerado pelo OutLook. Coloquei algumas observações(dúvidas) no código.

Abraço e obrigado.

 

 

Return-Path: <EMAIL DO DESTINATARIO>

Delivered-To: EMAIL QUE ENVIA

Received: (qmail 19257 invoked by uid 509); 29 Aug 2008 12:24:39 -0300

Received: from ip (email-ip) by server (envelope-from <email>, uid 89) with

 

qmail-scanner-2.02

(clamdscan: 0.92/8116. spamassassin: 3.2.3.

Clear:RC:0(ip):SA:1(10.6/5.0):.

Processed in 6.35733 secs); 29 Aug 2008 15:24:39 -0000

X-Spam-Status: Yes, score=10.6 required=5.0

X-Spam-Level: ++++++++++

X-Qmail-Scanner-Mail-From: email via server

X-Qmail-Scanner: 2.02 (Clear:RC:0(ip):SA:1(10.6/5.0):. Processed in 6.35733 secs)

Received: from unknown (HELO deus) (email@ip)

by server with SMTP; 29 Aug 2008 12:24:32 -0300

Message-ID: <B18843C7775343BD80F5D05279FFC75C@deus> //---------ESSE "Message-ID" MUDA DE VALOR PARA APRESENTAR A IMAGEM. ESTE ID EU CRIARIA ALEATÓRIAMENTE QUANDO DECLARÁ-LO EM ALGUMA VARIÁVEL?

From: "Eu" <email>

To: <email_destino>

Subject: teste

Date: Fri, 29 Aug 2008 12:24:36 -0300

//------------------------------AQUI SERIA O CONTEUDO DA VAR HEADERS(EX: $headers ='MIMe-Version:1.0; $headers .='Type:multipart/related';...)?

MIME-Version: 1.0

Content-Type: multipart/related;

type="multipart/alternative";

boundary="----=_NextPart_000_0003_01C909D2.33389C60" //-----PORQUE AQUI "NextPart_000_0003" E ABAIXO "NextPart_001_0004" MUDA O VALOR?

//-----------------------------FIM DA VAR HEADERS

X-Priority: 3

X-MSMail-Priority: Normal

X-Mailer: Microsoft Outlook Express 6.00.2900.5512

Disposition-Notification-To: "Eu" <email>

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

X-Antivirus: avast! (VPS 080828-0, 28/08/2008), Outbound message

X-Antivirus-Status: Clean

X-Antivirus: avast! (VPS 080828-0, 28/08/2008), Inbound message

X-Antivirus-Status: Clean

 

//-----------------------------AQUI SERIA O CONTEUDO DA VAR MSG? (IRIA DAQUI ATÉ O FINAL DO DOCUMENTO?) ex: $msg = ' [ate o resto do doc]';

 

This is a multi-part message in MIME format.

 

------=_NextPart_000_0003_01C909D2.33389C60

Content-Type: multipart/alternative;

boundary="----=_NextPart_001_0004_01C909D2.33389C60"

 

 

------=_NextPart_001_0004_01C909D2.33389C60

Content-Type: text/plain;

charset="iso-8859-1"

Content-Transfer-Encoding: quoted-printable

 

testando email com mensagem

 

-------------------------------------------------------------------------=

-------

 

apos essa linha acima, abaixo a imagem

 

aqui vem o cabe=E7alho

certificado N=B0

bla

bla

bla

bla

bla

bla

bla

bla

bla

bla

 

-------------------------------------------------------------------------=

-------

 

fim do relatorio

------=_NextPart_001_0004_01C909D2.33389C60

Content-Type: text/html;

charset="iso-8859-1"

Content-Transfer-Encoding: quoted-printable

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD>

<META http-equiv=3DContent-Type content=3D"text/html; =

charset=3Diso-8859-1">

<META content=3D"MSHTML 6.00.6000.16705" name=3DGENERATOR>

<STYLE></STYLE>

</HEAD>

<BODY bgColor=3D#ffffff>

<DIV><FONT face=3DArial size=3D2>testando email com =

mensagem</FONT></DIV>

<DIV>

<HR>

</DIV>

<DIV><FONT face=3DArial size=3D2>apos essa linha acima, abaixo a =

imagem</FONT></DIV>

<DIV><IMG alt=3D"" hspace=3D0 =

src=3D"cid:88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus"=20

align=3Dbaseline border=3D0></DIV>

<DIV><FONT face=3DArial size=3D2>aqui vem o cabe=E7alho</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>certificado N=B0</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV>

<HR>

</DIV><FONT face=3DArial size=3D2>fim do relatorio</FONT></BODY></HTML>

 

------=_NextPart_001_0004_01C909D2.33389C60--

 

------=_NextPart_000_0003_01C909D2.33389C60

Content-Type: image/gif;

name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus>

 

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

3/3vh3/85T//+KtDEgEBADs=

 

------=_NextPart_000_0003_01C909D2.33389C60--

Compartilhar este post


Link para o post
Compartilhar em outros sites

como o "jack o stripador" faria, vamos por partes.

 

 

cabeçalho

 

Return-Path: <EMAIL DO DESTINATARIO>

Delivered-To: EMAIL QUE ENVIA

Received: (qmail 19257 invoked by uid 509); 29 Aug 2008 12:24:39 -0300

Received: from ip (email-ip) by server (envelope-from <email>, uid 89) with

 

qmail-scanner-2.02

(clamdscan: 0.92/8116. spamassassin: 3.2.3.

Clear:RC:0(ip):SA:1(10.6/5.0):.

Processed in 6.35733 secs); 29 Aug 2008 15:24:39 -0000

X-Spam-Status: Yes, score=10.6 required=5.0

X-Spam-Level: ++++++++++

X-Qmail-Scanner-Mail-From: email via server

X-Qmail-Scanner: 2.02 (Clear:RC:0(ip):SA:1(10.6/5.0):. Processed in 6.35733 secs)

Received: from unknown (HELO deus) (email@ip)

by server with SMTP; 29 Aug 2008 12:24:32 -0300

Message-ID: <B18843C7775343BD80F5D05279FFC75C@deus> //---------ESSE "Message-ID" MUDA DE VALOR PARA APRESENTAR A IMAGEM. ESTE ID EU CRIARIA ALEATÓRIAMENTE QUANDO DECLARÁ-LO EM ALGUMA VARIÁVEL?

From: "Eu" <email>

To: <email_destino>

Subject: teste

Date: Fri, 29 Aug 2008 12:24:36 -0300

1

Return-Path: <EMAIL DO DESTINATARIO>

Delivered-To: EMAIL QUE ENVIA

ao contrário...

 

Return-Path: <EMAIL QUE ENVIA>

Delivered-To: EMAIL DO DESTINATARIO

2

Message-ID: <B18843C7775343BD80F5D05279FFC75C@deus> //---------ESSE "Message-ID" MUDA DE VALOR PARA APRESENTAR A IMAGEM. ESTE ID EU CRIARIA ALEATÓRIAMENTE QUANDO DECLARÁ-LO EM ALGUMA VARIÁVEL?

não.. esse ID é referente ao ID da mensagem.

Esse parâmetro é definido pelo servidor SMTP. Não é necessário atribuir um valor

 

 

3

From: "Eu" <email>

To: <email_destino>

sugestao

 

From: "NOME QUE ENVIA" <EMAIL QUE ENVIA>

To: "NOME DO DESTINATARIO" <EMAIL DO DESTINATARIO>

Compartilhar este post


Link para o post
Compartilhar em outros sites

definindo cabeçalho multipart

 

//------------------------------AQUI SERIA O CONTEUDO DA VAR HEADERS(EX: $headers ='MIMe-Version:1.0; $headers .='Type:multipart/related';...)?

MIME-Version: 1.0

Content-Type: multipart/related;

type="multipart/alternative";

boundary="----=_NextPart_000_0003_01C909D2.33389C60" //-----PORQUE AQUI "NextPart_000_0003" E ABAIXO "NextPart_001_0004" MUDA O VALOR?

//-----------------------------FIM DA VAR HEADERS

1

AQUI SERIA O CONTEUDO DA VAR HEADERS(EX: $headers ='MIMe-Version:1.0; $headers .='Type:multipart/related';...)?

sim!

no caso, email multipart significa que o email contém mais de 1 cabeçalho. o cliente de email indentificará as partes tendo como base o valor do atributo "boundary"

 

 

2

//-----PORQUE AQUI "NextPart_000_0003" E ABAIXO "NextPart_001_0004" MUDA O VALOR?

//-----------------------------FIM DA VAR HEADERS

não! o atributo "boundary" é 1 só.

o que for definido no cabeçalho será procurado no corpo da mensagem e nos cabeçalhos das partes

 

para declarar no cabeçalho inicie com o padrão

 

"----=_NextPart_"

 

note que são 4 hífens no incício.

 

no corpo são 6 hífens

 

"------=_NextPart_"

 

o valor posterior pode ser representado por quaiquer caracteres alfanuméricos

 

recomenda-se uso de numero aleatório baseado em timestamp ou data

 

exemplo

 

----=_NextPart_20080830141101

Compartilhar este post


Link para o post
Compartilhar em outros sites

content

 

obs: retirei o conteudo da imagem para simplificar o código e prosseguir na análise

 

//-----------------------------AQUI SERIA O CONTEUDO DA VAR MSG? (IRIA DAQUI ATÉ O FINAL DO DOCUMENTO?) ex: $msg = ' [ate o resto do doc]';

 

This is a multi-part message in MIME format.

 

------=_NextPart_000_0003_01C909D2.33389C60

Content-Type: multipart/alternative;

boundary="----=_NextPart_001_0004_01C909D2.33389C60"

 

 

------=_NextPart_001_0004_01C909D2.33389C60

Content-Type: text/plain;

charset="iso-8859-1"

Content-Transfer-Encoding: quoted-printable

 

testando email com mensagem

 

-------------------------------------------------------------------------=

-------

 

apos essa linha acima, abaixo a imagem

 

aqui vem o cabe=E7alho

certificado N=B0

bla

bla

bla

bla

bla

bla

bla

bla

bla

bla

 

-------------------------------------------------------------------------=

-------

 

fim do relatorio

------=_NextPart_001_0004_01C909D2.33389C60

Content-Type: text/html;

charset="iso-8859-1"

Content-Transfer-Encoding: quoted-printable

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD>

<META http-equiv=3DContent-Type content=3D"text/html; =

charset=3Diso-8859-1">

<META content=3D"MSHTML 6.00.6000.16705" name=3DGENERATOR>

<STYLE></STYLE>

</HEAD>

<BODY bgColor=3D#ffffff>

<DIV><FONT face=3DArial size=3D2>testando email com =

mensagem</FONT></DIV>

<DIV>

<HR>

</DIV>

<DIV><FONT face=3DArial size=3D2>apos essa linha acima, abaixo a =

imagem</FONT></DIV>

<DIV><IMG alt=3D"" hspace=3D0 =

src=3D"cid:88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus"=20

align=3Dbaseline border=3D0></DIV>

<DIV><FONT face=3DArial size=3D2>aqui vem o cabe=E7alho</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>certificado N=B0</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV><FONT face=3DArial size=3D2>bla</FONT></DIV>

<DIV>

<HR>

</DIV><FONT face=3DArial size=3D2>fim do relatorio</FONT></BODY></HTML>

 

------=_NextPart_001_0004_01C909D2.33389C60--

 

------=_NextPart_000_0003_01C909D2.33389C60

Content-Type: image/gif;

name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus>

 

STREAM DA IMAGEM EM BASE64

 

------=_NextPart_000_0003_01C909D2.33389C60--

 

1

//-----------------------------AQUI SERIA O CONTEUDO DA VAR MSG? (IRIA DAQUI ATÉ O FINAL DO DOCUMENTO?) ex: $msg = ' [ate o resto do doc]';

sim!

desde a primeria linha

 

$msg = "

This is a multi-part message in MIME format.

 

até a última

 

------=_NextPart_000_0003_01C909D2.33389C60--

";

 

 

 

2

preste atenção no código gerado pelo outlook express

 

<IMG alt=3D"" hspace=3D0 =

src=3D"cid:88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus"=20

align=3Dbaseline border=3D0>

qual a semelhança com o cabeçalho do conteúdo da imagem?

 

Content-Type: image/gif;

name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus>

 

o atributo "Content-ID" indica o valor de referência do objeto dentro do corpo do email

por exemplo,

 

para exibir uma imagem refira-se pelo "Content-ID"

 

o outlook express insere alguns códigos de escape de caracteres para prevenir-se contra valores não alfanuméricos

<IMG alt=3D"" hspace=3D0 =

src=3D"cid:88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus"=20

align=3Dbaseline border=3D0>

entretanto, não há necessidade de fazer escape se a seguir uma padrão para a nomenclatura

veja o mesmo código de forma limpa

<img src="cid:88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus" border=0 align=baseline>

 

Content-ID de um objeto

Content-Type: image/gif;

name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus>

o atributo Content-ID pode ser simplificado.

nesse caso, o outlook express gera um numero serial para envitar possíveis conflitos com outros IDs que possam existir

 

entretanto, é possível simplificar conforme exemplo abaixo:

 

 

Content-Type: image/gif;

name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <logo.gif>

desse modo fica mais "legível" ao escrever o código HTML para linkar a imagem

 

<img src="cid:logo.gif" border=0 align=baseline>

a única peculiaridade é o valor de "cid:", que representa um "protocolo" interno.

caso não seja especificado "cid:" o caminho da imagem será procurado diretório da mensagem, ond obviamente não existe nenhuma imagem, ocasionando em erro.

 

 

 

nota importante: para enviar emails usando o modo multipart é preciso que o servidor SMTP sej autenticado

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, muito obrigado por suas detalhadas explicações sobre as codificações de emails. Com base nelas, consegui estudar os códigos gerados pelo outlook e

 

compará-los com o código que tenho em php.

 

Verifiquei alguns detalhes interessantes.

 

1) No cabeçalho do outlook, ele especifica: Content-Type: multipart/related; type="multipart/alternative". No código php, está "multipart/mixed". Alterei o

 

headers do php para deixá-lo igual ao do outlook. Resultado: O email não é enviado.

 

2) Percebi também que a variável boundary (declarada no php) chama o método "strtotime" que analisa uma definição de texto em ingles em timestamp unix. Porém

 

a var boundary não tem o "----=_NextPart_" como no outlook. Declarei então:

$boundary = '----=_NextPart_'strtotime('NOW');

Não deu certo...o email também não foi enviado.

 

3) na var msg, declarei o "Content-ID:<logo.gif>" da imagem, e no corpo do email, a chamei pela tag <img src="cid:logo.gif"> . Resultado: A imagem não foi

 

anexada ao email. Tentei também fazer esta declaração na variavel $imagem ( $imagem = 'Content-ID:<logo.gif>; img src="cid:logo.gif">';). Também não deu

 

certo.

 

 

4) No outlook, antes da mensagem, há uma informação sobre o Content-Type (como você havia explicado em posts anteriores) indicando a mudança do tipo de

 

conteúdo. Porém, no php, quando fiz a mesma declaração na var msg, o email também não foi enviado.

 

$msg .= 'Content-Type: multipart/alternative\"\n"';

$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

$msg .= "Content-Transfer-Encoding: quoted-printable\n\n";

 

 

 

 

Porquê esse script php não aceita o Content-Type:multipart/related como no outlook?

 

Creio que este é o detalhe final para resolver este problema com a imagem. Estou certo?

 

O código abaixo, é o mais próximo que cheguei do que eu gostaria que fosse, exceto pelo fato da imagem não ficar dentro da tabela no topo do documento(ela

 

continua aparecendo no rodapé final do email).

 

 

Novamente eu agradeço pela atenção e paciência em me ajudar. Acho que ao solucionarmos este código, o mesmo será de muita utilidade para muitos neste site.

 

Abraços.

 

 

 

<?php

 

$boundary = strtotime('NOW'); // CHAMA O MÉTODO QUE GERA O TIMESTAMP

$imagem = 'Content-Type:image/jpg; <img src="logo_600.jpg">'; // ESPECIFICA O TIPO DE CONTEÚDO E O CAMINHO PARA O ARQUIVO

 

 

// DECLARAÇÃO DO CABEÇALHO INFORMANDO O TIPO DE EMAIL. NÃO ACEITA multipart/related; type="multipart/alternative";

 

$headers = "From: EMPRESA\n";

$headers .= "MIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\n";

 

 

$destinatarios = "email_fixo" . ", " ;

$destinatarios .= "&pmel"; // EMAIL RECEBIDO NO PREENCHIMENTO DO FORMULÁRIO

 

 

// ABRINDO O DELIMITADOR...NÃO ACEITOU "----=_nextPart_" COMO GERADO PELO OUTLOOK

 

$msg = "--" . $boundary . "\n";

$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; // INFORMAÇÃO SOBRE O TIPO DE CONTEUDO

$msg .= "Content-Transfer-Encoding: quoted-printable\n\n";

 

$msg .= '

<html>

<head>

<title>Certificado de Inspeção Interno</title>

<style type="text/css">

<!--

.style1 {

color: #FF0000;

font-weight: bold;

}

-->

</style>

</head>

<body>

<table width="600" border="1" align="center" bordercolor="#990000" bgcolor="#990000">

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col">'.$imagem.'</th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="center"><span class="style1">CERTIFICADO DE INSPEÇÃO INTERNO</span> </div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Certificado N°:</strong></div>

<div align="left">'.$pnum.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Cliente:</strong></div>

<div align="left">'.$pcli.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Especificações:</strong></div>

<div align="left">'.$pesp.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Peso(Kg):</strong></div>

<div align="left">'.$ppes.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Fardos:</strong></div>

<div align="left">'.$pfar.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Data:</strong></div>

<div align="left">'.$pdt1.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Nota Fiscal N°: </strong></div>

<div align="left">'.$pnot.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Foram efetuados os seguintes testes: </strong></div>

<div align="left">'.$ptes.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Observações complementares: </strong></div>

<div align="left">'.$pobs.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>GQT:</strong></div>

<div align="left">'.$pgqt.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="left"><strong>Data:</strong></div>

<div align="left">'.$pdt2.'</div></th>

</tr>

<tr>

<th bordercolor="#FF0000" bgcolor="#FFFFFF" scope="col"><div align="center"><strong>Fim do Relatório </strong></div></th>

</tr>

</table>

<p> </p>

</body>

</html>

';

 

// ABRINDO OUTRO DELIMITADOR INFORMANDO SOBRE O CONTEUDO DE IMAGEM (COMO EM "----=_NextPart_#" DO OUTLOOK)

 

$msg .= "--" . $boundary . "\n";

$msg .= "Content-Transfer-Encoding: base64\n";

$msg .= "Content-Disposition: attachment; filename=\"logo_600.jpg\"\n\n";

 

// EM Content-Disposition, COLOQUEI "inline", MAS NÃO FUNCIONOU. SÓ ACEITA "attachment"

 

 

// DAQUI PRA BAIXO, EU NÃO ALTEREI NADA, POIS SÃO ESTES MÉTODOS OS RESPONSÁVEIS PELA CODIFICAÇÃO E ENVIO DA IMAGEM.

 

ob_start();

readfile("logo_600.jpg");

$enc = ob_get_contents();

ob_end_clean();

 

$msg_temp = base64_encode($enc). "\n";

$tmp[1] = strlen($msg_temp);

$tmp[2] = ceil($tmp[1]/76);

 

for ($b = 0; $b <= $tmp[2]; $b++) {

$tmp[3] = $b * 76;

$msg .= substr($msg_temp, $tmp[3], 76) . "\n";

}

 

unset($msg_temp, $tmp, $enc);

mail("$destinatarios", "Certificado_Inspeção_Interno", $msg, $headers);

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

há um detalhe que gostaria de explicar no final somente.

 

primeiramente vamos resolver essa parte mais "complicada"

 

 

estou vendo no ultimo código PHP postado, que ainda há alguns erros na sua montagem

 

por exemplo

 

expliquei num post acima sobre o boundary

 

e no código PHP você está fazendo errado

 

procure montar exatamente igual ao escopo montado pelo Outlook Express

 

não! o atributo "boundary" é 1 só.

o que for definido no cabeçalho será procurado no corpo da mensagem e nos cabeçalhos das partes

 

para declarar no cabeçalho inicie com o padrão

 

"----=_NextPart_"

 

note que são 4 hífens no incício.

 

no corpo são 6 hífens

 

"------=_NextPart_"

 

 

não li todo o código postado, mas "olhando por cima" vi outro erro

 

$msg .= "Content-Transfer-Encoding: base64\n";

$msg .= "Content-Disposition: attachment; filename=\"logo_600.jpg\"\n\n";

outlook express:

Content-Type: image/gif; name="logo.gif"

Content-Transfer-Encoding: base64

Content-ID: <88C9CDA40AEC4FB5B0932EB92C0D3C6D@deus>

 

 

siga o escopo

 

 

isso aqui também nao é necessário

ob_start();

readfile("logo_600.jpg");

$enc = ob_get_contents();

ob_end_clean();

 

$msg_temp = base64_encode($enc). "\n";

$tmp[1] = strlen($msg_temp);

$tmp[2] = ceil($tmp[1]/76);

 

for ($b = 0; $b <= $tmp[2]; $b++) {

$tmp[3] = $b * 76;

$msg .= substr($msg_temp, $tmp[3], 76) . "\n";

}

todo esse trecho pode simplificar assim:

 

$msg .= chunk_split( base64_encode( file_get_contents( caminhoImagem ) ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, muito obrigado pela sua paciência e atenção em me ajudar. Consegui resolver o problema!

 

No corpo da mensagem, havia um erro: "Content-Transfer-Encoding:quoted-printable"

Substituí o valor por "7bit". Faltou também a linha "Content-Disposition: inline" para informar que a imagem é para ser exibida no corpo do email.

 

Segue abaixo o script 100% funcionando.

 

Abraços.

 

<?php

	$boundary = strtotime('NOW');
	$imagem = '<img src= "ENDEREÇO URL COMPLETO DA IMAGEM">';
	$headers = "From: NOME\n";
	$headers .= "MIME-Version: 1.0\n";
	$headers .= "Content-Type: multipart/related; boundary=\"" . $boundary . "\"\n";
	$destinatarios  = "EMAIL" . ", ";
	$destinatarios .= "EMAIL2";

	$msg = "--" . $boundary . "\n";
	$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
// [b]ESSA LINHA QUE É A RESPONSÁVEL PELA INSERÇÃO DA IMAGEM NO CORPO DO EMAIL[/b]
	$msg .= "Content-Transfer-Encoding: 7bit\n; Content-Disposition: inline\n\n"; 

	$msg .= '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
-->
</style>
</head>

<body>
<table width="610" border="2" align="center" cellpadding="0" cellspacing="0" bordercolor="#990000">
  <tr>
	<th bordercolor="#D50000" scope="col"><table width="600" border="1" bordercolor="#990000">
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $imagem . '</th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" bgcolor="#990000" scope="col"><span class="style1">CERTIFICADO DE INSPEÇÃO INTERNO</span> </th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col"> </th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" bgcolor="#990000" scope="col"><span class="style1">CERTIFICADO N°</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pnum . '</th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">CLIENTE</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pcli . '</th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">ESPECIFICAÇÕES</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pesp . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">PESO(Kg)</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $ppes . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">FARDOS</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pfar . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">DATA</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pdt1 . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">NOTA FISCAL N° </span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pnot . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">FORAM EFETUADOS OS SEGUINTES TESTES </span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $ptes . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">OBSERVAÇÕES COMPLEMENTARES</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pobs . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">GQT</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pgqt . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">DATA</span></th>
	  </tr>
	  <tr>
		<th bordercolor="#FF0000" scope="col">' . $pdt2 . ' </th>
	  </tr>
	  <tr bgcolor="#990000">
		<th bordercolor="#FF0000" scope="col"><span class="style1">FIM DO RELATÓRIO </span></th>
	  </tr>
	</table></th>
  </tr>
</table>
</body>
</html>

';

	$msg .= "--" . $boundary . "\n";
	$msg .= "Content-Transfer-Encoding: base64\n";
	$msg .= "Content-Disposition: attachment; filename=\"logo_600.jpg\"\n\n";

	ob_start();
	readfile("logo_600.jpg");
	$enc = ob_get_contents();
	ob_end_clean();

	$msg_temp = base64_encode($enc). "\n";
	$tmp[1] = strlen($msg_temp);
	$tmp[2] = ceil($tmp[1]/76);

	for ($b = 0; $b <= $tmp[2]; $b++) {
	$tmp[3] = $b * 76;
	$msg .= substr($msg_temp, $tmp[3], 76) . "\n";
	}

	unset($msg_temp, $tmp, $enc);
	mail("$destinatarios", "Certificado_Inspeção_Interno", $msg, $headers);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

firmeza!

 

até me surpreendeu pela rápido resolução

 

procure criar uma rotina dentro de uma classe ou simples função

 

e com o tempo você vai melhorando o código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola gostaria de saber como posso fazer um mailing utilizando essa tecnica de envio da imagem anexada, gostaria q o email já ficasse na pasta de papel de cartas do outlook. obrigado

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.