如何使用 Vuejs2 发送电子邮件。我设法获取输入数据并将它们转换为 json,但我无法将它们发送到邮箱。
我寻找PHPMailer的一面但面对PHP和Vue不要混合。
如何发送表单内容?
模板 :
<div class="JC-contact__form">
<b-form @submit="onSubmit" v-if="show">
<b-form-group class="JC-contact__form--lastName">
<b-form-input type="text" v-model="form.lastName"> </b-form-input>
</b-form-group>
<b-form-group class="JC-contact__form--firstName">
<b-form-input type="text" v-model="form.firstName"> </b-form-input>
</b-form-group>
<b-form-group>
<b-form-input type="text" v-model="form.topic"> </b-form-input>
</b-form-group>
<b-form-group>
<b-form-input type="email" v-model="form.email"></b-form-input>
</b-form-group>
<b-form-textarea v-model="form.text"></b-form-textarea>
<b-button type="submit">Envoyer</b-button>
</b-form>
</div>
脚本 :
export default {
name: 'Contact',
data () {
return {
form: {
lastName: '',
firstName: '',
topic: '',
email: '',
text: ''
},
file: null,
show: true
}
},
methods: {
onSubmit (evt) {
evt.preventDefault();
alert(JSON.stringify(this.form));
},
onReset (evt) {
evt.preventDefault();
/* Reset our form values */
this.form.lastName = '';
this.form.firstName = '';
this.form.topic = '';
this.form.email = '';
this.form.text = '';
/* Trick to reset/clear native browser form validation state */
this.show = false;
this.$nextTick(() => {
this.show = true
});
}
}
}
原文由 DenisMasot 发布,翻译遵循 CC BY-SA 4.0 许可协议
无法直接从 Vue 发送邮件,因为您需要某种服务器来处理邮件协议。这永远不能直接从浏览器中完成。我不熟悉PHP,所以我无法帮助你。在节点中,您需要 nodemailer 包和一些 smtp 服务器来处理电子邮件,例如 Amazon Simple Email Server(或者您可以使用您的 gmail 帐户)。您还可以做的是使用 axios 向 SendGrid 或 Mandrill 或类似的服务发送一个发布请求。他们会将您的请求转换为电子邮件并将其发送到您请求正文中指定的地址。
更多信息在这里:
https://sendgrid.com/docs/API_Reference/Web_API/mail.html
https://mandrillapp.com/api/docs/