• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gonçalo_ssb

Imagem no corpo do email

12 mensagens neste tópico

Ola muito bom dia,

Mais uma vez venho aqui colocar uma dúvida na qual não estou a conseguir obter resposta a partir das minhas pesquisas. A minha dúvida consiste em colocar uma imagem no corpo do email que envio via função mail().

O meu código é o seguinte:


$texto = "Caro(a): $nome_contacto <br /><br /> $mensagem <br /><br /> Cumprimentos,<br />Fascínio health Club.<br />";

mail($email_contacto,$assunto, $texto,"From: Fascínio Health Club <geral@fascinio.net>" . "MIME-Version: 1.0\n" . "Content-type: text/html; charset=iso-8859-1");

Antes deste código é feito um upload de uma imagem para o meu servidor.

A minha variável de $mensagem é composta por código HTML e fica com o seguinte aspecto:

$mensagem = "$texto_news <br /><img src='http://www.fascinio.net/admin/$imagem' />";

O problema é que a minha imagem não está a aparecer no corpo do meu email.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Para aparecer sempre a imagem no mail, tens de a embeber. A maneira mais fácil de fazer isso é usares a class phpmailer (se nao estou em erro no nome) que te facilita nesse ponto. O que ela faz é codificar a imagem como texto e assim seguir sempre nos emails, sem ser preciso ir carregá-la ao servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tu ao enviar uma imagem por email, ela vai ser enviada em formato bin, e a imagem deve ser adicionada ao cabeçalho da mensagem. em codigo eu nao sei como fazer isso nunca precisei.

mas ver se isto te ajuda

http://pt.php.net/mail

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se conseguires depois deixa aqui a dizer como fizeste, para futuras duvidas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epa... que grande confusão que praqui vai.

Rapaz, a única coisa que tens que fazer é enviar um email em HTML. Não só o conteudo do email deve ser html, tambem o header apropriado deve estar definido com o mime type adequando (text/html se não me engano).

A imagem podes envia-la em anexo (não aconselhado) ou simplesmente fazer como tu disseste e subi-la par ao teu servidor.

Está tudo no manual:

http://se.php.net/function.mail

inclusive um exemplo de um email em html.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Caro PedroTuga, pois a minha dúvida principal reside na forma correcta de desenvolvimento, pois há pessoas que dizem uma coisas e há outras que dizem outra. Como podes ver no código do tópico inicial, eu já estou a fazer o que dizes ou seja, apenas incluir código HTMl com uma referencia para a minha imagem e também um header. Contudo nao está a funcionar, vou verificar melhor a tua referencia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teus headers estão mal. Tem que ser um por linha para serem parsados correctamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa? um por linha como assim?

Eu estou a passar os headers efectuando uma concatenação...que eu saiba é assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu desculpo, mas tens isso mal.

Vê o exemplo do link que afixei acima. Todos os headers têm \r\n no fim, os teus não, logo não são headers válidos.

Se quiseres podes ler na especificação por ti próprio.

http://www.ietf.org/rfc/rfc2822.txt

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nem precisas de ir ao \r\n, falta-te a mudança de linha do From para o MIME-Version. :D

Verifica também se o URL no src da <img> é o correcto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na especificação de facto só diz que tem que ser um header por linha. Um \n é gajo para chegar.

O \r\n sempre foi das coisas que me fez muita confusão. Se alguem tiver um link ou quiser explicar aqui a história dos newlines.

Qual é que é o newline 'unix-style'. O UNIX usava um código diferente do ascii? Como dá conta o ascii desses caracteres assim que encontra um?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na especificação de facto só diz que tem que ser um header por linha. Um \n é gajo para chegar.

O \r\n sempre foi das coisas que me fez muita confusão. Se alguem tiver um link ou quiser explicar aqui a história dos newlines.

Qual é que é o newline 'unix-style'. O UNIX usava um código diferente do ascii? Como dá conta o ascii desses caracteres assim que encontra um?

Originalmente, os macs usavam o caracter \r (cariage return -> significava "voltar para o inicio da linha" como nas maquinas de escrever), e o Unix usava o \n (line feed -> mudar para a linha seguinte) e o Windows usava os 2 caracteres \r\n (criage return + line feed = voltar para o inicio da linha de baixo). É tudo uma questão de semântica. Por causa de compatibilidades, os macs passaram a usar o \n do unix e o windows continuou a usar os 2 caracteres juntos.

Acho que já tinha disto isto algures.

http://en.wikipedia.org/wiki/Carriage_return

http://en.wikipedia.org/wiki/Newline

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora