Meteor 템플릿을 이메일의 HTML 본문으로 렌더링하는 방법이 있습니까?Meteor 이메일에서 동적 HTML 템플릿 사용하기
예를 들어 수집 데이터를 표시하거나 해당 이메일 안에 동적 링크를 생성하고자하는 경우.
Meteor 템플릿을 이메일의 HTML 본문으로 렌더링하는 방법이 있습니까?Meteor 이메일에서 동적 HTML 템플릿 사용하기
예를 들어 수집 데이터를 표시하거나 해당 이메일 안에 동적 링크를 생성하고자하는 경우.
예, 가능합니다.이 일반적인 문제에 대한 클라이언트 측 솔루션을 제공합니다.
먼저 귀하의 이메일 HTML 본문 역할을하는 간단한 템플릿을 정의해야합니다 :
<template name="shareEmailContent">
<p>{{message}}</p>
<a href="{{url}}">{{title}}</a>
</template>
이 그럼 당신은 (Email.send at docs.meteor.com를 참조 Email.send을 사용할 수 있습니다, 당신은 이메일을 추가로 몇 가지 적절한 구성이 필요합니다 스마트 패키지 및 설정 MAIL_URL
) 템플릿 렌더링 결과를 전자 메일로 보내십시오. Email.send는 서버에서만 작동하므로 클라이언트에서 호출 할 수있는 서버 메소드를 정의해야합니다.
서버 측 :
Meteor.methods({
sendShareEmail:function(options){
// you should probably validate options using check before actually
// sending email
check(options,{
from:String,
// etc...
});
Email.send(options);
}
});
클라이언트 측 :
코멘트에서 언급 한 바와 같이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);
, 당신은 또한 서버에서 이메일 템플릿을 렌더링하는 결정할 수 있습니다. 서버 측 렌더링은 아직 지원되지 않지만 타사 템플릿 패키지를 사용하여 수행 할 수 있습니다.
편집 2014년 6월 9일 : 유성 1.0
유성 0.9.1의로 최신 Blaze
API를 사용하도록 업데이트.
1.Install 유성 패키지 이메일 :
meteor add email
meteor add blaze
2.Create 이메일 계정하거나 얻을 SMTP 당신은 당신의 서버에서 템플릿 이메일을 보내려면 이메일 제공자의 매개 변수 나는 Gmail로 테스트하지 않았다. 하지만 센드 메일을 사용하면 힘들었습니다! /server/smtp.js에서
3.Configure SMTP 설정 :
Meteor.startup(
function(){
process.env.MAIL_URL = 'smtp://<username>:<password>@smtp.sendgrid.net:587';
}
); /client/template/my_template.html에서
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.Create 템플릿 :
는 는4.You는 당신의 server.js에를 사용할 수 있습니다
<template name="my_template">
Hello <b>{{name}}</b>
</template>
공지 사항이 {{ name}} 여기서 data = {name : "John"}으로 정의 된 데이터에 정의 된 속성을 참조하십시오. 다음 템플릿은 "Hello John"으로 출력되며, 모든 html 태그는 변수 html에 저장됩니다.
6. 서버 코드에서 아무 곳이나 myfunction()을 호출하십시오. Et voilà! 전자 메일이 전송됩니다. 이메일을받지 못했다면 스팸 메일에 포함되지 않았는지 확인하십시오.
이 방법을 사용하려면 여전히 클라이언트 측에 템플릿이 있어야합니다.
'Template'은 서버에 정의되어 있지 않습니까? – chug2k
우리는 또한'Template is not defined'error를 서버에서 얻고 있습니다. –
혹시 SSR 패키지를 설치하려하셨습니까? https://github.com/meteorhacks/meteor-ssr – rodrigocprates
허용 대답은 클라이언트 측 코드를 사용합니다. 이메일 템플릿을 만들려면 클라이언트 측 코드가 안전하지 않을 수 있습니다. 서버 측 렌더링 템플릿 용 패키지 (meteor-ssr)를 사용할 수 있습니다.
@pahan이 언급 한대로 서버 측 렌더링 패키지가 최선의 방법 일 수 있습니다. 다음은 내가 사용한 좋은 튜토리얼입니다. https://themeteorchef.com/tutorials/using-the-email-package
템플릿은 클라이언트 측에서만 작동하므로 모든 사용자가 모든 이메일 템플릿을 볼 수있게하려는 경우이 방법이 유용합니다. – Diskdrive
이메일 템플릿을 서버 측에서 생성하려면 (예를 들어)이 패키지를 사용해야합니다. https://github.com/EventedMind/meteor-handlebars-server – saimeunt
예 그게 내가 한 일이야. 잘 했어! 하지만 메테오 (Meteor)에서 네이티브하게 지원 될 때 그래, 좋을 것입니다. – Diskdrive