Nuestros correos electrónicos se envían bien y ahora queremos agregar un archivo adjunto. Así que copiamos este ejemplo: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js
E hizo un código así:
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);
}
Pero al llamar a sendEmail
nos dicen sendgrid.Attachment is not a function
(primera línea de la segunda función).
Imprimí el objeto sendgrid y se ve así:
{ 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] }
Gracias,
Ricardo.
Descubierto después de leer el código. Ese ejemplo en github está totalmente equivocado. Debería ser así:
addAttachment(email: any, attachmentData: any): void {
email.addFile(attachmentData);
}
Gracias @RichardJECooke ,
Investigaremos más y arreglaremos el ejemplo. ¡Gracias por tomarse el tiempo para compartir la solución!
Si nos envía un correo electrónico a
¡Gracias!
Ahora tenemos un ejemplo de archivo adjunto aquí: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#attachments
El enlace de ejemplo no funciona.
Este es el nuevo enlace:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
Hola, sé que este problema se ha resuelto, pero es más un problema que he tenido al intentar enviar imágenes incrustadas a un usuario de Gmail.
Encontré un par de razones por las que gmail no mostraría imágenes debido a cierta seguridad adicional que imponen, así que pensé en usar el parámetro adjuntos para agregar un content_id y ver si eso funciona en lugar de usar una etiqueta src normal.
Cuando se envía, la cuadrícula de envío devuelve una solicitud incorrecta. Este es mi método.
Codifico el JPG así:
let bitmap = fs.readFileSync(imageDir);
imageBase64URL = new Buffer(bitmap).toString('base64');
Luego paso el JPG codificado al campo de contenido dentro del argumento de los archivos adjuntos:
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 incrusto mi CID así en mi archivo ejs:
html
<img alt="Logo" src="cid:cluttr-logo" width="60"
height="60"
Ojalá alguien tenga una idea de lo que estoy haciendo mal. Gracias.
@thinkingserious : Hola, ¿sabes cómo enviar un archivo adjunto con la plantilla transaccional?
@thinkingserious ¿hay alguna manera de agregar un archivo adjunto de URL a mi correo electrónico? No pude encontrar exactamente un documento que indique cómo funcionan los archivos adjuntos en Sendgrid.
Saludos,
Mohit
@thinkingserious : Hola, ¿sabes cómo enviar un archivo adjunto con la plantilla transaccional?
si está utilizando la API v3, acaba de agregar una clave attachments
. content
debe estar codificado en 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"
}
El enlace de ejemplo no funciona.
Este es el nuevo enlace:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md
El nuevo enlace nuevo: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/attachments.md
Comentario más útil
El enlace de ejemplo no funciona.
Este es el nuevo enlace:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md