Nossos e-mails estão enviando bem e agora queremos adicionar um anexo. Então, copiamos este exemplo: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js
E fez o código assim:
const sendgrid: any = require('sendgrid')(process.env.sendgrid_key);
sendEmail(data: IEmailData): void {
const email: any = new sendgrid.Email();
email.addTo(data.emailTo);
for (let attachment in data.attachments)
this.addAttachment(email, attachment);
sendgrid.send(email, (error: any, json: string) => {
if (error)
console.log(error);
});
}
addAttachment(email: any, attachmentData: any): void {
const attachment = new sendgrid.Attachment();
attachment.setContent(attachmentData.content);
attachment.setType(attachmentData.type);
attachment.setFilename(attachmentData.filename);
attachment.setDisposition(attachmentData.disposition);
email.addAttachment(attachment);
}
Mas ao chamar sendEmail
somos informados de sendgrid.Attachment is not a function
(primeira linha da segunda função).
Imprimi o objeto sendgrid e ele se parece com isto:
{ api_key: 'SG.DaV0L',
api_user: null,
options:
{ uriParts:
{ protocol: 'https',
host: 'api.sendgrid.com',
port: '',
endpoint: '/api/mail.send.json' },
uri: 'https://api.sendgrid.com/api/mail.send.json' },
version: '1.9.2',
Email: [Function: Email],
smtpapi: [Function: smtpapi],
send: [Function] }
Obrigado,
Richard.
Descobri depois de ler o código. Esse exemplo no github está totalmente errado. Deve ser assim:
addAttachment(email: any, attachmentData: any): void {
email.addFile(attachmentData);
}
Obrigado @RichardJECooke ,
Iremos investigar mais e corrigir o exemplo. Obrigado por compartilhar a solução!
Se você nos enviar um e-mail para [email protected] com seu endereço de correspondência e o tamanho da camiseta, adoraríamos enviar-lhe alguns brindes.
Obrigado!
Agora temos um exemplo de anexo aqui: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#attachments
O link de exemplo não está funcionando.
Este é o novo link:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
Olá, sei que este problema foi resolvido, mas é mais um problema que tenho tido ao tentar enviar imagens incorporadas a um utilizador do Gmail.
Eu encontrei alguns motivos pelos quais o gmail não renderizava imagens devido a alguma segurança adicional que eles impõem, então pensei em usar o parâmetro attachments para adicionar um content_id e ver se isso funciona em vez de usar uma tag src regular.
Quando é enviado, a grade de envio retorna uma solicitação incorreta. Aqui está meu método.
Eu codifico o JPG assim:
let bitmap = fs.readFileSync(imageDir);
imageBase64URL = new Buffer(bitmap).toString('base64');
Em seguida, passo o JPG codificado para o campo de conteúdo dentro do argumento de anexos:
mailer.send({
to: '[email protected]',
from: '[email protected]',
subject: `You have been removed from ${house.name} by ${removerName}`,
html: result,
attachments: [
{
content: imageBase64URL,
filename: 'cluttr-logo.jpg',
contentId: 'cluttr-logo'
},
]
});
Finalmente, incorporo meu CID ao meu arquivo ejs:
html
<img alt="Logo" src="cid:cluttr-logo" width="60"
height="60"
Espero que alguém tenha alguma ideia do que estou fazendo de errado. Obrigado.
Olá @ lvh1g15 ,
Acho que você precisa adicionar disposition: inline
, assim .
Obrigado pela atenção,
Elmer
@thinkingserious : Olá, você sabe como enviar um anexo com o modelo transacional?
@thinkingserious existe uma maneira de adicionar um anexo de URL ao meu e-mail, quais são as outras maneiras de adicionar anexo ao meu e-mail. não consegui encontrar exatamente um documento informando como os anexos funcionam no Sendgrid.
Saudações,
Mohit
@thinkingserious : Olá, você sabe como enviar um anexo com o modelo transacional?
se você estiver usando a API v3, basta adicionar uma chave attachments
. content
precisa ser codificado em Base64
https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html
email = {
"from":{
"email":"[email protected]"
},
"personalizations":[
{
"to":[
{
"email" : "[email protected]"
}
],
"dynamic_template_data": {
}
}
],
"attachments": [
{
"content": "",
"filename" ""
}
]
"template_id":"someid"
}
O link de exemplo não está funcionando.
Este é o novo link:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
O novo link: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/attachments.md
Comentários muito úteis
O link de exemplo não está funcionando.
Este é o novo link:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md