In my application I have a contact form that I would like to have a notification sent to me.
My application is using ReactJs
I have started to setup mail-gun, but I need some help as I tried to follow the meteor-chef’s guide https://themeteorchef.com/tutorials/using-the-email-package
constructor(props){
super(props);
this.handleSendMessage = this.handleSendMessage.bind(this);
}
handleSendMessage(event){
event.preventDefault();
const message = ({
firstName: this.name.value,
lastName: this.name.value,
email: this.email.value,
message: this.message.value,
});
event.target.reset();
Meteor.call('sendMessage', message, (error) => {
if (error) {
Materialize.toast(`An error occured while sending your message: ${error}`);
} else {
Materialize.toast('Message sent!', 4000);
browserHistory.push('/');
}
});
}
Here is the form
<form className="col s12" ref={contactForm => (this.contactForm = contactForm)} onSubmit={this.handleSendMessage.bind(this)}>
<div className="row">
<div className="input-field col s6">
<i className="material-icons prefix">account_circle</i>
<input id="icon_prefix" type="text" ref={firstName => (this.firstName = firstName)} className="validate"/>
<label for="icon_prefix">First Name</label>
</div>
<div className="input-field col s6">
<i className="material-icons prefix">account_circle</i>
<input id="icon_telephone" type="text" ref={lastName => (this.lastName = lastName)} className="validate"/>
<label for="icon_telephone">Last Name</label>
</div>
</div>
<div className="row">
<div className="input-field col s12">
<i className="material-icons prefix">email</i>
<input id="email" type="email" ref={email => (this.email = email)} className="validate"/>
<label for="email" data-error="wrong" data-success="right">Email</label>
</div>
</div>
<br/>
<div className="row">
<div className="input-field col s12">
<i className="material-icons prefix">work</i>
<textarea id="textarea1" ref={message => (this.message = message)} className="materialize-textarea"></textarea>
<label for="textarea1">Please Describe your job</label>
</div>
</div>
</form>
Here is my method.js code from inside my api directory
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { Email } from 'meteor/email';
Meteor.methods({
sendMessage(message) {
check(message, Object);
Meteor.defer(() => {
Email.send({
to: 'taylor@baremetalcloud.com',
from: `${message.fistName} ${message.email}`,
subject: `${message.fistName} sent a message!`,
text: message.message,
});
});
},
});