Jump to content
biakelly

Enviar e-mail com imagem Base64

Recommended Posts

Oi tudo bem?

 

Não sou muito a favor de enviar e-mail com imagem, mas surgiu uma necessidade para enviar, desta forma no meu form de email (uso SendGrid para entrega) adicionei meu código Base64 de uma imagem que quero enviar:

 

$message = "<img width='250px' height='58' alt='Bia' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAd4AAABuCAYAAACJI3.......' />

Obs.: Não coloquei o código Base64 completo pois é muito grande.

 

 

Estou fazendo desta forma pois é mais fácil e não entendo de NodeJS para criar um CID (considerando também que é ultrapassado)

 

Bem, ao enviar o e-mail o que recebo é uma imagem quebrada desta forma:

image.png.c49d671bd69405e9bc767132819c4b98.png

 

Pesquisando na web li que a incidência de aplicação de imagem aumenta o tamannho do e-mail e alguns serviços incluindo Gmail, Iphone, Android e Outlook podem bloquear nativamente.

 

Portanto minha pergunta é: como resolver isso para que serviços possam abrir naturalmente a imagem sem bloqueio

 

Desafio imenso imagino, me ajuda?

 

Share this post


Link to post
Share on other sites

Oi @Matheus Tavares tudo bem e você como esta?

 

Eu tinha feito com uma imagem no meu próprio servidor e sobe sem nenhum problema. Minha dúvida é se usar uma imagem diretamente sem uma Base64 é uma boa prática. Quero evitar bloqueios e não entregas das minhas mensagens

Share this post


Link to post
Share on other sites

Por aqui tudo tranquilo também :)

 

Pode usar apenas o endereço sim, sem problemas.

Confesso que nunca senti necessidade de enviar mensagens com imagens representadas por base64, mas desenvolvi um sistema que dispara uma boa quantia de e-mails por minuto e nunca tive problemas com SPAM ou bloqueios.

 

Sua atenção deve estar voltada a:

1 - Respeitar as políticas do servidor em relação ao envio de e-mails. Esse material também pode ser útil:

https://www.ftc.gov/tips-advice/business-center/guidance/can-spam-act-compliance-guide-business

 

2 - Respeitar as preferências dos usuários em relação ao recebimento desses e-mails, principalmente se estiver visando marketing. Isso deve manter sua taxa de complaints baixa, que é importante para a reputação do IP de origem do envio dos e-mails.

 

3 - Registrar as devidas chaves DNS que garantem que seu e-mail é autêntico e enviado de fato pelo seu domínio, como abordado nesse artigo: https://www.rackaid.com/blog/email-dns-records/

 

O sistema que citei acima está hospedado na AWS (Amazon Web Services), que te dá os primeiros 50.000 e-mails enviados gratuitamente e o processo de configuração dos DNS é bem simplificado. O problema é o dólar alto do momento, mas dependendo de sua carga de envio, talvez seja interessante dar uma olhadinha.

Share this post


Link to post
Share on other sites

Estes artigos vão me ajudar bastante.

 

Tenho um sistema que criei para uma ong que envia uma vez por mês e-mails sobre notícias e novas vagas.

 

Estou tentando arrumar ele para enviar uma quantidade de 3 mil e-mails por mês. Estou barrando nestes pontos de Spam e bloqueio já que a maioria trava no destino mesmo utilizando o Sendgrid verificado (chato isso né)

 

Que legal que o seu sistema esteja funcionando bem, ainda vou chegar nesse ponto, ultimamente tenho buscado referências para construção, passo a passo chego lá hi hi hi

 

Muito obrigada pelos artigos e pela atenção de sempre Matheus, vou ler com certeza :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By My Work
      Boa tarde!
      Gostaria de tirar algumas duvidas sobre php.
      Estou utilizando em um projeto de estudo, aqueles editores de texto que formata os textos e envia para o banco de dados na text área.
      lá posso copia e colar a imagem jpeg por exemplo e salvo no BD codificada certo?
      Sendo que para recuperar essa imagem.....vocês teriam algum procedimento para que possa filtrar e vir somente a imagem sem o texto que salvei junto da imagem? Tipo copio e cola a imagem no text área e embaixo da imagem digitaria algo, meio que postagem de blog, vamos dizer assim.
      Como a listagem SELECT * FROM  é feita e salva em array para depois exibir o campo imagem, e o campo  texto. Queria que em algum momento pudesse escolher somente vir  a imagem. sem texto.

      Código:
       
      //aqui esta puxando os arquivos do BD e   funcionando perfeito.....
       while($exibe = $resultado->fetch(PDO::FETCH_OBJ)){
               ?>
       
      <!--Ambiente dos Post iniciais->

      <div class="posts_indi">

          <data>Postado em: <strong> Aqui tá funcionando normal, por isso não colei  nada....</strong> </data>
          
          <!-- Titulo das postagens-->
          <h1 id="title"> <?php echo $exibe->titulo;?> </h1> Aqui esta ok também
       
       
          <!-- Imagens das postagens quando houver. Senão aparece os textos apenas-->
       
      //É aqui que estou querendo ajuda, pois como o campo descricao salva texto e imagem semelhante esse editor de texto aqui que estou escrevendo, então ele lista tudo. Sendo que queria esse efeito ae de mostrar apenas imagem sem texto para depois ter mais controle  no css ou js seja na imagem.

            <div class="imgp"> <?php echo $exibe->descricao;?> </div>
       
      Então gostaria que ficasse mais ou menos assim:
       
      imagem:
         <div class="imgp"> <?php echo $exibe->descricao;?> </div>
       
      Texto:
         <div class="imgp"> <?php echo $exibe->descricao;?> </div>
       
      Quando salva apenas texto, ele já lista normal. sem aparecer nenhum erro.

      Por que quero isso??
       Por que o sistema de postagem seria algo intranet, e as publicações envolvem copiar e colar planilhas do excel que esta funcionando normal também.
      Mas na questão de imagem, gostaria de poder manipular no sentido de poder implementar uma mini galeria de imagem caso a empresa queira publicar mais de uma foto. Pois ao publicar duas fotos elas ficam uma embaixo da outra e cria um paragrafo.
       
      Desde já agradeço a atenção e ajuda de todos...... Abraço
       
    • By avelar.avelar
      Turma esta dando erro neste item em negritom, estou tentando , pegar um pdf que esta convertido em base64 e mandando ele gerar o arquivo e gravar numa pasta determinada com um nome, alguem poderias me ajudar? urgente.  Ovbrigado
       
       
      TrablheController.php
       
      public function post(Request $request)
          {
              $rules = [
                  'nome' => 'required|string',
                  'data_nascimento' => 'required|date',
                  'email' => 'required|string',
                  'cpf' => 'required|string',
                  'curriculo' => ['required','mime:/application\/(?:docx||pdf\+xml);base64,.+/'],
              ];
       
              $validator = Validator::make(request()->json()->all(), $rules);
       
              if ($validator->fails()) {
                  return response()->json($validator->errors()->toArray(), 422);
              }
       
              $vagas = Vagas::select('id')->firstOrFail();
       
              $data = $request->json()->all();
       
              $fileB64 = isset($data['curriculo']) ? $data['curriculo'] : false;

              unset($data['curriculo']);
       
              $trabalheconosco = new TrabalheConosco;
       
              foreach (array_keys($rules) as $key) {
                  if (array_key_exists($key, $data)) {
                      $trabalheconosco->{$key} = $data[$key];
                  }
              }
              $trabalheconosco->save();
       
              if ($fileB64) {
                  $trabalheconosco->curriculo = $this->saveFileB64($fileB64, 'images/curriculos', $trabalheconosco->id);
                  $trabalheconosco->save();
              }
       
              $vagas->TrabalheConosco()->save($trabalheconosco);
       
              return response()->json(['data' => $trabalheconosco->toArray()], 201);
          }
       
      Controller.php

          public function saveFileB64($fileB64, $path = '', $id = null): string
          {
              $chunkf = explode(';base64,', $fileB64, 2);
              $chunkf[0] = str_replace('data:', '', $chunkf[0]);
              if (!isset(self::MIMES[$chunkf[0]], $chunkf[1])) {
                  return null;
              }
              $extension = self::MIMES[$chunkf[0]];
              $fileBin = base64_decode($chunkf[1]);
              $time = time();
              $pathName = null;
              do {
                  $pathName = "$path/{$id}_{$time}_"
                      . abs(crc32(uniqid('f', true))) . $extension;
              } while ($this->storage->exists($pathName));
              $this->storage->put(file_put_contents($pathName, $fileBin));
              return $pathName;
          }
       
      ERROR NO INSOMNIA ( 500 INTERNAL SERVER ERROR)
    • By Artur Mendonça
      Olá amigos, 
      tenho uma BD Mysql onde são guardados dados codificados com Base64_encode. 
      Preciso fazer uma consulta em que os dados gravados em um campo (a que vamos chamar nome para facilitar) sejam ordenado por ordem ascendente. 
       
      Tenho assim:
      $SQL = "select * from tbl_dados where ativo ='1' order by from_base64('nome') asc" 
      mas não está funcionando, pois os dados aparecem pela ordem que está gravado na tabela. 
       
      Já tentei de várias formas mas sem sucesso. 
       
      Podem ajudar-me por favor? 
       
      Desde já muito obrigado. 
    • By Gustavo2503
      Eu preciso de um link para abrir um arquivo em decodificado em base64, eu fiz o link mas quando eu abro o link ele não aparece nada, o título da página fica "Sem título" e a página fica branca, vazia. E quando eu clico na URL e dou ENTER, ele aparece o meu arquivo normal. O link está assim:
      <a target="_blank" href="data:application/pdf;base64,MEU_ARQUIVO_BASE64">Arquivo</a> Como arrumar isso?
    • By caiodelfim
      Eu estou tentando decodificar um arquivo php base64 faz um tempo, e não consegui de jeito nenhum
       
      http://pastebin.com/ij9xDcu5
       
      por favor, me ajudem, esse arquivo é muito importante pra mim.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.