Tak, jest to możliwe, tutaj dostarczam rozwiązanie tego powszechnego problemu po stronie klienta.
Najpierw należy zdefiniować prosty szablon, który będzie służył jako ciała html email:
<template name="shareEmailContent">
<p>{{message}}</p>
<a href="{{url}}">{{title}}</a>
</template>
Następnie można użyć Email.send (patrz Email.send at docs.meteor.com, trzeba jakąś właściwą konfigurację takich jak dodawanie e-mail Inteligentny pakiet i ustawienie MAIL_URL
), aby wysłać wiadomość e-mail z wynikiem renderowania szablonu. Email.send działa tylko na serwerze, więc musisz zdefiniować metodę serwera, którą można wywołać z klienta.
po stronie serwera:
Meteor.methods({
sendShareEmail:function(options){
// you should probably validate options using check before actually
// sending email
check(options,{
from:String,
// etc...
});
Email.send(options);
}
});
po stronie klienta:
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);
Jak wspomniano w komentarzach, można również zdecydować się na renderowanie szablony e-mail na serwerze. Renderowanie po stronie serwera nie jest jeszcze obsługiwane, ale nadal można to zrobić za pomocą zewnętrznego pakietu szablonów.
EDIT 09.06.2014: zaktualizowane do najnowszej Blaze
API jako Meteor 0.9.1
Problem polega na tym, że szablon działa tylko po stronie klienta, więc jest to przydatne tylko wtedy, gdy chcesz, aby wszystkie szablony wiadomości e-mail były widoczne dla wszystkich użytkowników. – Diskdrive
Masz rację, jeśli chcesz wygenerować szablony wiadomości e-mail po stronie serwera (co ma sens), będziesz musiał użyć tego pakietu, na przykład: https://github.com/EventedMind/meteor-handlebars-server – saimeunt
yeah Właśnie to zrobiłem. Działało dobrze! Ale tak, będzie dobrze, jeśli jest obsługiwany natywnie w Meteor. – Diskdrive