2016-04-06 7 views
0

Ich habe versucht, eine E-Mail zu senden, nachdem ein Autoformular erfolgreich eingereicht wurde. Ich habe versucht, mit dem Template.Events 'Senden', die nicht funktioniert haben und ich habe versucht, metremethod = "sendEmail" zu verwenden. Nichts, was ich tue, scheint zu funktionieren. Kann mir bitte jemand sagen, was ich falsch mache?sendEmail nach Formular übermittelt

Pfad: 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}} 

Pfad: 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

Pfad: 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);  
      };   
     } 
    } 
}; 

Antwort

1

Sie können Callbacks/Hooks von Autoform verwenden. Wenn Sie möchten, E-Mail nach einem Einsatz schicken folgenden wäre eine Lösung:

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', 
      '[email protected]', 
      'Hello from Meteor!', 
      otheruserId); 
    } 
    } 
}; 

AutoForm.addHooks('jobOfferForm', hooksObject); 

Bitte beachten Sie autoform documentation für weitere Informationen.

+0

Ich versuche, Ihren Vorschlag zu implementieren. Bitte entschuldigen Sie meinen Mangel an Wissen, während ich noch Meteor und Programmierung lerne. Haken im Allgemeinen haben mich ein wenig verwirrt. Ich bin mir nicht sicher, wo ich sie hinstellen soll. Ich habe die Dokumentation durchgelesen, aber ich finde es nicht sehr hilfreich. Würde es dir etwas ausmachen, mir mein Update anzusehen und mich wissen zu lassen, was ich falsch mache? – bp123

+0

Welche Fehlermeldung erhalten Sie? – Areca

+0

Ich kann noch nicht senden. Der Build stürzt in der Zeile nach Email.Send ab – bp123