Ir para conteúdo
  • Cadastre-se

dev botao

Documentação descente para usar o synapse !


Ver Solução Respondido por toninhonunes,
  • Este tópico foi criado há 448 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá,

Alguém mais experiente com o synapse pode me ajudar? Estou querendo sair do Indy 10 e ir para o Synapse, mas encontro pouca coisa como usá-lo. Eu atualmente uso o Indy 10 para enviar email pela api da SendGrid mas já está dando dor de cabeça com openssl versões mais recentes, mesmo com o Indy mais atualizado. Com o synapse eu consigo autenticar, mas na hora do envio vem uma mensagem de erro conforme descrito abaixo.

//Preenche informações na instancia da classe passando a senha api e parametros de da autenticação.

constructor TSendGrid.Create(sApiKey : String = '');
begin
  fContentId := '';
  fFilesName := TStringList.Create;
  fFileStream:= TList.Create;
  fTobcc     := TStringList.Create;
  if sApiKey <> '' then
    fApiKey := Trim(sApiKey);

  fHTTPSend := THTTPSend.Create;
  fHTTPSend.Clear;
  fHTTPSend.Headers.Add('Authorization: Bearer ' + fApiKey);
  fHTTPSend.Headers.Add('Content-Type: application/json');
  fHTTPSend.Headers.Add('Accept: application/json');
  fHTTPSend.Headers.Add('Accept-Encoding: gzip, deflate, br');
  fHTTPSend.Protocol := '1.1';
  fHTTPSend.Sock.SSL.SSLType := LT_TLSv1_2; 
end;
 

Na hora de enviar eu pego dados montado em Json e jogo pra variável Data que é uma string e jogo no httpsend.Document.Write(), compila e tudo e executa, aí vem o retorno, mas creio que tudo deve ser convertido para base64, enfim, to tentando conhecer essa lib. O Indy é muita coisa para eu usar só um recurso.

function TSendGrid.SendMail: Boolean;
var
  Data : string;
begin
  if fTobcc.Count > 999+1 then
  begin
    Application.MessageBox('Cada lote de envio deve ter no máximo 999 emails,'
      + #13#10 + 'faça um loop no seu código para criar lotes nessa ' + #13#10
      + 'quantidade para enviar!', 'Aviso !', MB_OK + MB_ICONSTOP +
      MB_DEFBUTTON2);
    SysUtils.Abort;
  end;

  Data := UTF8Encode(GetJsonMail);
  fHTTPSend.Document.Clear;
  fHTTPSend.Document.Position := 0;
  fHTTPSend.Document.Write(Pointer(Data)^, Length(Data) );
  fHTTPSend.Sock.OnStatus := OnStatus;
  Result := fHTTPSend.HTTPMethod('POST', 'https://api.sendgrid.com/v3/mail/send');
  ShowMessage(fHTTPSend.ResultString);
end;

 

Eu vejo as mensagens no OnStatus, ele retorna o IP, porta que conectou e uns códigos como esse:

667

606

e por último UNSUPPORTED MEDIA TYPE.

 

Por enquanto eu só envio um texto que está em um Memo.

Segue o link da API https://docs.sendgrid.com/api-reference/how-to-use-the-sendgrid-v3-api/authentication

Com Indy funciona ok, mas ainda estou aprendendo a lib da synapse.

 


 

 

Postado

Olá,

Eu consegui fazer funcionar, mas com muito custo, a forma que estou usando é muito acesso a API JSON, estou tendo que transformar arquivos em anexos TFileStream em Base64 com UTF8. Penei bastante pra fazer funcionar. A documentação da synapse nesse sentido fica a desejar. Realmente a lib é simples e prática. O Indy tem muita coisa e também está defasado em relação ao OPENSSL, cada um criar IOhandler pra lidar com Openssl e isso se tornou um saco. E só uso httpsend na maioria dos casos. Eu não uso SMTP para enviar emails, estou usando uma API da SendGrid que consigo enviar em lote um monte de emails, muito mais rápido e prático. Assim que finalizar tudo, divulgado a adaptação, obrigado pela atenção. 

  • Solution
Postado

Vou encerrar como resolvido, a biblioteca é fantástica, poderia ser mais popular se tivesse muitos exemplos. usar SMTP é fácil, mas trocar dados com API que creio que falta mais documentação neste segmento, mas ela é enxuta e perfeita, já tirei o Indy10 e usando a synapse. 

  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

  • Este tópico foi criado há 448 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.