meteor - gratis - plantillas para correo electronico en html
Usando plantillas HTML dinámicas en correos electrónicos de Meteor (4)
Como @pahan mencionó, un paquete de representación del lado del servidor podría ser su mejor apuesta. Aquí hay un buen tutorial que utilicé: https://themeteorchef.com/tutorials/using-the-email-package
¿Hay una manera de representar una plantilla Meteor como el cuerpo HTML de un correo electrónico?
Por ejemplo, si quiero mostrar datos de recopilación o generar enlaces dinámicos dentro de ese correo electrónico.
Meteorito 1.0. Si desea enviar correos electrónicos con plantillas desde su servidor:
1.Instalar el email del paquete del meteorito:
meteor add email
meteor add blaze
2.Cree una cuenta de correo electrónico en sendgrid o simplemente obtenga los parámetros smtp de su proveedor de correo electrónico. No probé con gmail. Pero con sendmail, fue directo!
3.Configure las configuraciones smtp en /server/smtp.js:
Meteor.startup(
function (){
process.env.MAIL_URL = ''smtp://<username>:<password>@smtp.sendgrid.net:587'';
}
);
4.Usted puede usar lo siguiente en su server.js:
myfunction(){
var html = Blaze.toHTML(Blaze.With(data, function() { return Template.my_template; }));
Email.send({
from: "My company name <[email protected]>",
to: "[email protected]",
subject: "Any subject...",
html: html
});
}
5.Crea tu plantilla en /client/template/my_template.html:
<template name="my_template">
Hello <b>{{name}}</b>
</template>
Observe que {{nombre}} aquí se refieren a las propiedades definidas en los datos, definidos como datos = {nombre: "Juan"}. La siguiente plantilla se mostrará como: "Hello John ", y todas las etiquetas html se guardarán en la variable html.
6. Llame a mi función () en cualquier lugar del código de su servidor. Et voilà! El correo electrónico será enviado. Si no recibe el correo electrónico, asegúrese de que no se haya incluido en su correo no deseado.
Este método aún necesita que la plantilla esté en el lado del cliente.
Sí, esto es posible, aquí proporciono una solución del lado del cliente a este problema común.
Primero debe definir una plantilla simple que servirá como su cuerpo html de correo electrónico:
<template name="shareEmailContent">
<p>{{message}}</p>
<a href="{{url}}">{{title}}</a>
</template>
Luego puede usar Email.send (vea Email.send en docs.meteor.com , necesitará una configuración adecuada, como agregar el paquete inteligente de correo electrónico y configurar MAIL_URL
) para enviar por correo electrónico el resultado de la representación de la plantilla. Email.send solo funciona en el servidor, por lo que debe definir un método de servidor que se pueda llamar desde el cliente.
Lado del servidor :
Meteor.methods({
sendShareEmail:function(options){
// you should probably validate options using check before actually
// sending email
check(options,{
from:String,
// etc...
});
Email.send(options);
}
});
Lado del cliente :
var dataContext={
message:"You must see this, it''s amazing !",
url:"http://myapp.com/content/amazingstuff",
title:"Amazing stuff, click me !"
};
var html=Blaze.toHTMLWithData(Template.shareEmailContent,dataContext);
var options={
from:"[email protected]",
to:"[email protected]",
subject:"I want to share this with you !",
html:html
})
};
Meteor.call("sendShareEmail",options);
Como se mencionó en los comentarios, también puede decidir representar plantillas de correo electrónico en el servidor. La representación del lado del servidor todavía no se admite, pero aún puede lograrlo utilizando un paquete de plantillas de terceros.
EDICIÓN 06/09/2014: actualizado para usar la última API de Blaze
partir de Meteor 0.9.1
respuesta aceptada utiliza el código del lado del cliente. Si está buscando crear plantillas de correo electrónico, el código del lado del cliente puede ser inseguro. hay un paquete ( github.com/meteorhacks/meteor-ssr ) para las plantillas de representación del lado del servidor que puede usar.