¿Hay alguna biblioteca para NodeJS para enviar correos con archivos adjuntos?Enviando correos con archivos adjuntos a través del NodeJS
Con recuerdos, sdepold
¿Hay alguna biblioteca para NodeJS para enviar correos con archivos adjuntos?Enviando correos con archivos adjuntos a través del NodeJS
Con recuerdos, sdepold
sí, es bastante simple, utilizo nodemailer: npm install nodemailer --save
var mailer = require('nodemailer');
mailer.SMTP = {
host: 'host.com',
port:587,
use_authentication: true,
user: '[email protected]',
pass: 'xxxxxx'
};
Luego lee un archivo y enviar un correo electrónico:
fs.readFile("./attachment.txt", function (err, data) {
mailer.send_mail({
sender: '[email protected]',
to: '[email protected]',
subject: 'Attachment!',
body: 'mail content...',
attachments: [{'filename': 'attachment.txt', 'content': data}]
}), function(err, success) {
if (err) {
// Handle error
}
}
});
Es posible utilizar nodejs-phpmailer
que utilice Node.js , ¿por qué aconsejarle que use una solución de php? – zobi8225
Creo que usa node.js pero se basa en php, es algo lento y malo ... Pero creo que hace el trabajo. –
¿Ha intentado Nodemailer?
Nodemailer supports
- Unicode to use any characters
- HTML contents as well as plain text alternative
- Attachments
- Embedded images in HTML
- SSL (but not STARTTLS)
Personalmente utilizo Amazon SES API de descanso o reposo Sendgrid API que es la forma más consistente para hacerlo.
Si necesita un enfoque de bajo nivel utilizar https://github.com/Marak/node_mailer y configurar su propio servidor SMTP (o cualquiera que tenga acceso demasiado)
Respuesta anterior, pero ¿cómo es una API más consistente que un servidor de sendmail local ...? –
También puede utilizar la biblioteca de Amazon SES de AwsSum:
En allí, no es una operación llamada SendEmail y SendRawEmail, el último de los cuales puede enviar archivos adjuntos a través del servicio.
intento con nodemailer, por ejemplo, intente esto:
var nodemailer = require('nodemailer');
nodemailer.SMTP = {
host: 'mail.yourmail.com',
port: 25,
use_authentication: true,
user: '[email protected]',
pass: 'somepasswd'
};
var message = {
sender: "[email protected]",
to:'[email protected]',
subject: '',
html: '<h1>test</h1>',
attachments: [
{
filename: "somepicture.jpg",
contents: new Buffer(data, 'base64'),
cid: cid
}
]
};
por último, enviar el mensaje
nodemailer.send_mail(message,
function(err) {
if (!err) {
console.log('Email send ...');
} else console.log(sys.inspect(err));
});
ReferenceError: datos no definidos - ¿Me falta un requerimiento? –
Nodemailer para cualquier necesidad de correo nodejs. Es lo mejor en este momento: D
uso del paquete de envío es muy flexible y fácil.
No lo he usado pero nodemailer (npm install nodemailer
) se parece a lo que desea.
Otra biblioteca alternativa para probar es emailjs.
Hice algunas de las sugerencias aquí, pero el código de ejecución se quejó de que send_mail() y sendMail() no están definidos (aunque simplemente copie el código pegado & con ajustes menores). Estoy usando el nodo 0.12.4 y npm 2.10.1. No tuve problemas con los correos electrónicos, eso funcionó para mí. Y tiene una buena envoltura alrededor de los archivos adjuntos, por lo que puedes conectarlo de varias maneras a tu gusto y fácilmente, en comparación con los ejemplos de los servidores de numeración aquí.
Enviar con expreso-anuncio publicitario (https://www.npmjs.com/package/express-mailer)
Enviar PDF ->
var pdf="data:application/pdf;base64,JVBERi0xLjM..etc"
attachments: [ { filename: 'archive.pdf',
contents: new Buffer(pdf.replace(/^data:application\/(pdf);base64,/,''), 'base64')
}
]
Enviar imagen ->
var img = 'data:image/jpeg;base64,/9j/4AAQ...etc'
attachments: [
{
filename: 'myImage.jpg',
contents: new Buffer(img.replace(/^data:image\/(png|gif|jpeg);base64,/,''), 'base64')
}
]
Enviar txt ->
attachments: [
{
filename: 'Hello.txt',
contents: 'hello world!'
}
]
También puede proporcionar un código de ejemplo mínimo. De esta manera, la respuesta no es muy útil ya que no tengo idea de dónde deben colocarse los archivos adjuntos. – select
puede usar oficial api de google para esto. Han proporcionado el paquete para nodo para este propósito. google official api
he unido parte de mi código que hizo lo accesorio para mí
function makeBody(subject, message) {
var boundary = "__myapp__";
var nl = "\n";
var attach = new Buffer(fs.readFileSync(__dirname + "/../"+fileName)) .toString("base64");
// console.dir(attach);
var str = [
"MIME-Version: 1.0",
"Content-Transfer-Encoding: 7bit",
"to: " + receiverId,
"subject: " + subject,
"Content-Type: multipart/alternate; boundary=" + boundary + nl,
"--" + boundary,
"Content-Type: text/plain; charset=UTF-8",
"Content-Transfer-Encoding: 7bit" + nl,
message+ nl,
"--" + boundary,
"--" + boundary,
"Content-Type: Application/pdf; name=myPdf.pdf",
'Content-Disposition: attachment; filename=myPdf.pdf',
"Content-Transfer-Encoding: base64" + nl,
attach,
"--" + boundary + "--"
].join("\n");
var encodedMail = new Buffer(str).toString("base64").replace(/\+/g, '-').replace(/\//g, '_');
return encodedMail;
}
PS Gracias a himanshu por su intensa investigación sobre este
Falta un '})' en la última línea. No puedo editar directamente porque tiene menos de 6 caracteres ... –
Hay un tipo de propiedades de archivos adjuntos. "contenido" es incorrecto. debe ser "contenido". – PyroJoke
@PyroJoke lo arregló, gracias por mencionarlo – Philippe