충분하지 담당자가 의견을.
나는 Sendgrids NPM 패키지를 사용하여 첨부 문제를 해결했습니다.
npm install sendgrid
유성 앱에 npm이 없으면 이것을 읽을 수 있습니다. 당신의 packages.json 서버에서 실행되는 파일에 다음
{
"sendgrid": "1.4.0"
}
에서 https://meteorhacks.com/complete-npm-integration-for-meteor
: 여기
Meteor.startup(function(){
process.env.MAIL_URL = 'smtp://<username>:<password>@smtp.sendgrid.net:587';
});
첨부 파일의 URL을 가져옵니다 샘플 유성 방법 (우리입니다 첨부 파일 컬렉션에서 S3 사용). 이 특정 방법은 원하는 수의 수신자에게 원하는 수의 첨부 파일을 보낼 수 있습니다. 여기에는 문맥에 맞는 논리가 있지만 첨부 파일을 보내고 실행하는 데 충분해야합니다.
중요한 부분 :
var email = new sendgrid.Email();
email.setFrom("[email protected]");
email.setSubject("subject");
email.addFile({
filename: attachment_name,
url: attachment_url
});
sendgrid.send(email, function (err, json) {
if (err) {
console.error(err);
}
if (json) {
console.log(json.message);
}
});
완전한 방법 예 : nodemailer 코드 당신이 무엇을
Meteor.methods({
SendEmail: function (subject, message, templateNumber) {
//console.log(subject, message, templateNumber);
var user_id = Meteor.userId();
var list = UserList.find({user_id: user_id}).fetch();
var sentTemplate = sentTemplate + templateNumber;
var counter = 0;
console.log(list.length);
// Track is the 'No Response' from the list.
for (var i = 0; i < list.length; i++) {
var email = new sendgrid.Email();
if (list[i].track == null || list[i].track == "1") {
//email.addTo(list[0].list[i].Email);
//console.log(list[0].list[i].Email);
email.to = list[i].email;
}
email.setFrom(Meteor.user().email);
email.replyto = Meteor.user().email;
email.setSubject(subject);
var firstName = list[i].name.split(" ")[0];
var companyReplace = message.replace("{{Company}}", list[i].company).replace("{{Company}}", list[i].company).replace("{{Company}}", list[i].company).replace("{{Company}}", list[i].company).replace("{{Company}}", list[i].company);
var nameReplace = companyReplace.replace("{{Name}}",list[i].name).replace("{{Name}}",list[i].name).replace("{{Name}}",list[i].name).replace("{{Name}}",list[i].name).replace("{{Name}}",list[i].name)
var firstNameReplace = companyReplace.replace("{{FirstName}}",firstName).replace("{{FirstName}}",firstName).replace("{{FirstName}}",firstName).replace("{{FirstName}}",firstName).replace("{{FirstName}}",firstName);
email.setHtml(firstNameReplace);
var numAttachments = Attachments.find({user_id: Meteor.userId()}).fetch().length;
var attachments = Attachments.find({user_id: Meteor.userId()}).fetch();
console.log("**********Attachments****************");
console.log(attachments);
console.log("**********Attachments****************");
for (var t = 0; t < numAttachments; t++) {
email.addFile({
filename: attachments[t].attachment_name,
url: attachments[t].attachment_url
});
}
sendgrid.send(email, function (err, json) {
if (err) {
console.error(err);
}
if (json) {
console.log(json.message);
}
});
//console.log(email);
} // end for loop
if (templateNumber == 1) {
Meteor.users.update({_id:Meteor.userId()}, {$set: {"sentTemplate1": true}});
}
if (templateNumber == 2) {
Meteor.users.update({_id:Meteor.userId()}, {$set: {"sentTemplate2": true}});
}
if (templateNumber == 3) {
Meteor.users.update({_id:Meteor.userId()}, {$set: {"sentTemplate3": true}});
}
if (templateNumber == 4) {
Meteor.users.update({_id:Meteor.userId()}, {$set: {"sentTemplate4": true}});
}
// for each email. replace all html
return list.length;
}
});
을 시도이야? 유성우 공식 패키지에서 첨부 파일이 지원된다고 생각하지 않습니다. – rivarolle
[이 패키지] (https://atmospherejs.com/mrt/meteor-nodemailer)를 사용하고 지침을 따라 달리기 (Meteor의 이메일과 매우 유사한 설정). 내 질문을 코드로 업데이트하겠습니다. –
이 기사는 몇 가지 예제를 가지고 있습니다. http://kukuruku.co/hub/javascript/meteor-how-to-build-a-todo-list –