2016-04-06 3 views
0

Я пытаюсь отправить электронное письмо после успешной отправки автоформы. Я пробовал использовать template.events 'submit', который не работал, и я попытался использовать metermethod = "sendEmail". Я ничего не делаю, кажется, работает. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно.sendEmail после отправленной формы

Путь: form.html

{{#autoForm collection="JobOffers" id="jobOfferForm" type="insert" meteormethod="sendEmail"}} 
    <fieldset> 
    {{> afQuickField name='firstName'}} 

    <button type="submit" data-meteor-method="sendEmail" class="btn btn-primary">Submit</button> 
</fieldset> 
{{/autoForm}} 

Путь: server/email.js

sendEmail: function (from, subject, userId) { 
    check([from, subject, userId], [String]); 

    // Let other method calls from the same client start running, 
    // without waiting for the email sending to complete. 
    this.unblock(); 

    SSR.compileTemplate('htmlEmail', Assets.getText('html-email.html')); 

    // to find the users info for the logged in users 
    // var user = Meteor.user(); 
    var user = Meteor.users.findOne({ _id: userId }); 
    var email = (user && user.emails[0].address); 

    var emailData = { 
     // name: (candidate && candidate.profile && candidate.profile.firstName), 
     name: (user && user.profile && user.profile.firstName), 

     // favoriteRestaurant: "Honker Burger", 
     // bestFriend: "Skeeter Valentine" 
    }; 

    Email.send({ 
     to: email, 
     from: from, 
     subject: subject, 
     html: SSR.render('htmlEmail', emailData) 
    }); 

    console.log('sendEmail sent'); 
    } 
}); 

UPDATE

Путь: form.js

AutoForm.hooks({ 
    jobOfferForm: hooksObject 
}); 


var hooksObject = { 
    after: { 
     insert: function(error, result){ 
      Email.send({ 
       var otheruserId = FlowRouter.getParam('id'); 

       Meteor.call('sendEmail', 
       '[email protected]', 
       'Hello from Meteor!', 
       otheruserId);  
      };   
     } 
    } 
}; 

ответ

1

Вы можете использовать callbacks/hooks of autoform. Если вы хотите отправить по электронной почте после вставки следующего будет решением:

var hooksObject ={ 
    after: { 
     insert: function(error, result){ 
       //Send email here 
     } 
    } 
} 

UPDATE:

var hooksObject = { 
    after: { 
    insert: function(error, result){ 
      var otheruserId = FlowRouter.getParam('id'); 

      Meteor.call('sendEmail', 
      't[email protected]', 
      'Hello from Meteor!', 
      otheruserId); 
    } 
    } 
}; 

AutoForm.addHooks('jobOfferForm', hooksObject); 

Пожалуйста, обратитесь к autoform documentation для получения дополнительной информации.

+0

Я пытаюсь реализовать ваше предложение. Пожалуйста, извините за недостаток знаний, поскольку я все еще изучаю метеорит и программирование. Крюки вообще меня немного смутили. Я не уверен, где я могу их поместить. Я просмотрел документацию, но я не нахожу ее очень полезной. Не могли бы вы взглянуть на мое обновление и сообщить мне, что я делаю неправильно. – bp123

+0

Какое сообщение об ошибке вы получаете? – Areca

+0

Я еще не могу отправить. Сбой сборки в строке после отправки по электронной почте. Отправить – bp123