Sendgrid-nodejs: cabeçalho personalizado para um anexo

Criado em 28 mar. 2016  ·  41Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Oi,

Estamos usando sendgrid para anexar arquivos iCal (ics) junto com o corpo do e-mail. Podemos definir o tipo de conteúdo como “texto / calendário” para o arquivo ics, no entanto, não é possível definir o cabeçalho adicional "método = PEDIDO", o que faz com que os clientes de e-mail não reconheçam o anexo como um evento de calendário.

Será possível definir cabeçalhos personalizados para cada anexo?

Cumprimentos

non-library issue

Todos 41 comentários

Olá @mindnuts ,

Eu não tenho certeza se entendi. Deixe-me ter certeza de que entendi:

  1. Você tem um e-mail com um anexo iCal
  2. Você deseja adicionar um cabeçalho a esse e-mail (por exemplo, Cabeçalho X: método = Solicitação)
  3. No momento, você não pode adicionar um cabeçalho adicional. O que você tentou?

Obrigado!

@thinkingserious

Ao criar o objeto de e-mail, estamos criando a matriz de arquivos a la e definindo "contentType" como "text / calendar" para arquivos .ics. Para que os arquivos ics sejam detectados corretamente pelo Outlook, o anexo também deve ter o método = REQUEST definido no cabeçalho.

Content-Type: text/calendar; charset=UTF-8; method=REQUEST

Isso será possível no cliente sendgrid?

Você pode compartilhar o código que está usando para definir este cabeçalho?

@thinkingserious aqui vai:

var sendgrid  = require('sendgrid')('YOUR_SENDGRID_API_KEY');

var email = new sendgrid.Email({
  to:       '[email protected]',
  from:     '[email protected]',
  subject:  'Hello World',
  html: 'My first email <b>through SendGrid.</b>',
  text:     'My first email through SendGrid.'
});

email.addFile({
  filename: 'calendar.ics',
  path: './calendar.ics',
  contentType: 'text/calendar'
});

sendgrid.send(email, function(err, json) {
  if (err) { return console.error(err); }
  console.log(json);
});

Aqui está o cabeçalho gerado pelo Sendgrid para este anexo:

Content-Disposition: attachment; filename="calendar.ics"
Content-Transfer-Encoding: base64
Content-Type: text/calendar; charset=utf-8; name="calendar.ics"

O que eu gostaria de ter é (REQUEST é apenas um exemplo):

Content-Type: text/calendar; charset=utf-8; method=REQUEST; name="calendar.ics"

Obrigado, esse exemplo é muito útil.

Você tentou apenas definir o cabeçalho diretamente com o parâmetro headers ?

@thinkingserious Não quero definir o cabeçalho do e-mail, quero poder definir o cabeçalho personalizado do anexo (arquivo .ics no meu caso) adicionado ao e-mail.

Cumprimentos
M

Obrigado pela atualização, isso faz sentido.

Isso não será mais um problema com a biblioteca v3. Por enquanto, a única maneira de definir esse cabeçalho é por meio de SMTPAPI: https://github.com/sendgrid/smtpapi-nodejs

@thinkingserious Obrigado pela sua resposta. Qual é o ETA para V3?

Não deve demorar mais do que alguns meses.

@mindnuts ,

Estamos agora a algumas semanas de distância. Você pode verificar o endpoint v3 / mail / send aqui: https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html e a nova versão desta biblioteca aqui: https : //github.com/sendgrid/sendgrid-nodejs/tree/v3beta

Obrigado por seu apoio!

Olá @thinkingserious ,

Acho que todo mundo ainda está esperando por uma solução, eu também!
Também gostaria de definir o método como REQUEST e encontrar o problema.

Você tem uma atualização? Já se passaram 2 meses!

Obrigado,
Tenha um bom dia,
Jérémy

Ei, @thinkingserious ,

Ainda estou bloqueado devido a este problema!
Você tem alguma atualização ? Qualquer solução ?

Obrigado,
Jérémy

Mais uma vez,
Nós realmente precisamos disso!

+1

response: {
      "statusCode": 400,
      "body": {
        "errors": [
          {
            "message": "The attachment type cannot contain ';', or CRLF characters.",
            "field": "attachments.0.type",
            "help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type"
          }
        ]
      },
      "headers": {
        "server": "nginx",
        "date": "Wed, 01 Mar 2017 04:43:59 GMT",
        "content-type": "application/json",
        "content-length": "216",
        "connection": "close",
        "x-frame-options": "DENY",
        "access-control-allow-origin": "https://sendgrid.api-docs.io",
        "access-control-allow-methods": "POST",
        "access-control-allow-headers": "Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
        "access-control-max-age": "600",
        "x-no-cors-reason": "https://sendgrid.com/docs/Classroom/Basics/API/cors.html"
      }
    }
}

Estou esquecendo de algo? Qual é a solução proposta? porque isso está fechado?

@pascalopitz ,

Este não deveria ter sido fechado. Obrigado pelo aviso.

Mais uma vez,

Olá @ataraxido ,

Esse problema está no roteiro do produto, mas não sei quando ele será entregue.

Recentemente, recebemos alguns novos votos para este recurso. Sempre que isso acontece, eu atualizo a equipe do produto para ajudar a superar a prioridade.

Obrigado pela atenção,

Elmer

@thinkingserious Só queria acrescentar que esse é um recurso muito importante para nós também. Alguma atualização no roteiro do produto?

Concordo, @hdornier , acrescentarei sua voz ao problema. Obrigado por votar!

@thinkingserious , você mencionou que isso pode ser feito com smtpapi. Você tem um exemplo disso? Qual parte do smtpapi? Uma simples substituição de algum tipo?

Olá @ e99cog ,

Não sei por que disse isso anteriormente :(

Não sei se isso vai funcionar usando o SMTPAPI, mas aqui está um exemplo de como ele é usado.

Obrigado pela atenção,

Elmer

+1 aqui também

No final, eu tive que resolver esse problema usando mailgun e o endpoint message.mime que ele tem, já que me permite enviar o mime explicitamente.

O sendgrid oferece esse recurso em alguma API?

Ei, pessoal!

Sou Matt, gerente de produto de experiência do desenvolvedor da SendGrid. Estou interessado em aprender mais sobre o que você precisa dos tipos MIME. Normalmente fazemos isso como um hangout do Google, para que eu possa aprender sobre seu caso de uso e os detalhes de que você precisa.

Fique à vontade para reservar um tempo na minha agenda - https://calendly.com/matt-bernier/mail-send-mime-types

Obrigado!!

precisa lidar com isso para um próximo projeto também - há um status sobre isso? Já se passaram 2 anos.

+1
Qualquer hora prevista de chegada para isso?

Também estou muito interessado nisso. Certamente, deve ser possível chegar a uma resposta agora.

Eu não quero amaldiçoar as coisas, mas um birdy me disse que estamos _super_ perto de implantar isso :) Estarei postando uma atualização aqui quando estiver no ar.

Olá pessoal!

Estou SUPER ANIMADO em anunciar que esse problema foi resolvido e que a correção está em produção! Faça um teste e me avise se você tiver mais problemas.

Obrigado por sua paciência com este aqui!

Obrigado pela atenção,

Elmer

@thinkingserious Essa é uma ótima notícia! Você pode ajudar a entender quais etapas tomar a seguir? Foi fornecido suporte para cabeçalho adicional> método = PEDIDO?

Olá @thinkingserious

Acabei de tentar e ainda recebo um erro (usando a API):

{"errors": [{"message": "O tipo de anexo não pode conter ';' ou caracteres CRLF.", "field": "attachments.0.type", "help": " http: // sendgrid. com / docs / API_Reference / Web_API_v3 / Mail / errors.html # message.attachments.type "}, {" message ":" O tipo de anexo não pode conter ';' ou caracteres CRLF. "," field ":" anexos. 1.type "," help ":" http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "}]}

Aqui está o que estou fazendo usando a API API:

$ attachment-> setType ('text / calendar; charset = "UTF-8"; método = REQUEST');

Tem certeza de que o problema foi resolvido? O que deveríamos fazer ?

Obrigado

@ataraxido funciona para mim
"attachments": [{ "content": "QkVHSU46....EQVINCg==", "type": "text/calendar; method=REQUEST", "filename": "file1.ics" }]

Devolveu 202 e o correio foi enviado

Ei @ataraxido, você não precisará especificar o conjunto de caracteres, pois o SendGrid anexará automaticamente este campo (o mesmo se aplica a text / html, text / plain). Tente novamente e nos diga se isso resolve 🤞

@ataraxido ,

Onde você consegue fazer isso funcionar?

Olá @abhilashabhatia ,

Sim, agora você pode fazer "type": "text/calendar; method=REQUEST" . Por favor, deixe-me saber se você tiver algum problema.

Olá @thinkingserious

Consegui enviar o método "header" = REQUEST, mas não consegui enviar um ICS embutido que funciona bem no Outlook.
Mesmo em linha com este "cabeçalho" personalizado, o evento lembra um ICS anexado.

Acho que é um caso de uso bastante amplo para todos os seus clientes; você teria um exemplo de trabalho ou um how-to?

Obrigado

+1 para o comentário de @ataraxido - podemos obter um exemplo @thinkingserious

@ataraxido @tetreault ,

Só para esclarecer, o envio como anexo funciona no Outlook, mas não inline?

Isso agora está em nossa lista de pendências e criei um problema caso alguém na comunidade gostaria de oferecer um PR.

@thinkingserious, na verdade, o ICS está embutido no e-mail, mas o Outlook o considera como um anexo, portanto, ele tem o comportamento / exibição esperado de um evento embutido de e-mail.
Estou me perguntando por que, tentei muitas coisas. Acho que pode ser porque você força os itens embutidos a serem codificados em base64, enquanto o embutido ICS típico está em 7bits.

Olá @ataraxido ,

Obrigado pela elaboração, acho que você deve saber algo sobre a codificação.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

nicoasp picture nicoasp  ·  3Comentários

mikemaccana picture mikemaccana  ·  4Comentários

umarhussain15 picture umarhussain15  ·  3Comentários

Loriot-n picture Loriot-n  ·  4Comentários

murphman300 picture murphman300  ·  4Comentários