2011-01-12 70 views

Respuesta

42

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 
     } 

    } 
}); 
+1

Falta un '})' en la última línea. No puedo editar directamente porque tiene menos de 6 caracteres ... –

+0

Hay un tipo de propiedades de archivos adjuntos. "contenido" es incorrecto. debe ser "contenido". – PyroJoke

+0

@PyroJoke lo arregló, gracias por mencionarlo – Philippe

1

Es posible utilizar nodejs-phpmailer

+0

que utilice Node.js , ¿por qué aconsejarle que use una solución de php? – zobi8225

+0

Creo que usa node.js pero se basa en php, es algo lento y malo ... Pero creo que hace el trabajo. –

3

¿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)
1

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.

+2

No olvide divulgar por completo su afiliación con proyectos que recomiende :) – Mike

+1

http://stackoverflow.com/ faq # promotion – Mike

4

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));  
    }); 
+0

ReferenceError: datos no definidos - ¿Me falta un requerimiento? –

0

Nodemailer para cualquier necesidad de correo nodejs. Es lo mejor en este momento: D

1

uso del paquete de envío es muy flexible y fácil.

0

No lo he usado pero nodemailer (npm install nodemailer) se parece a lo que desea.

1

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í.

0

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!' 
       } 
      ] 
+0

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

0

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

Cuestiones relacionadas