用vuejs发送电子邮件

时间:2019-01-18 05:33:25

标签: php mysql laravel vue.js

我想使用laravel和vuejs发送电子邮件。我写了如下的laravel控制器函数

Mail::send(['text' => 'mail'],['name', 'David'], function($message){
    $message->to('test123@gmail.com')->subject('Test Email');
    $message->from('testmail@gmail.com', 'David');
});
return response()->json(['success'=>true]);

我为@click方法编写了一个vuejs发送电子邮件功能

this.axios.get('https://techwizlanka/send', {
    body: JSON.stringify(this.user),
    headers: {
        'content-type': 'application/json',
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
})
.then(res => res.json())
.then(data => {
    console.log("email sent");
})
.catch(err => console.error(err.toString()));

我这样称呼该URL

Route::get('/send', 'MailController@sendMail'); 

但是当单击发送按钮时,它会显示此错误消息。

  

app.js:44786未捕获的TypeError:无法读取未定义的属性“ get”       在VueComponent.sendMail(app.js:44786)       在调用者处(app.js:34769)       在HTMLButtonElement.fn._withTask.fn._withTask(app.js:34568)

有人可以帮助我解决此问题吗?基本上,我想在使用laravel和vuejs提交表单时发送电子邮件。

2 个答案:

答案 0 :(得分:2)

肯定是因为您没有正确呼叫axios。请确保this上的this.axios指的是什么。

假设您使用npm install axios安装了 axios 。然后尝试按以下方式或多或少地导入和使用 axios

import axios from 'axios';

export default {
  data() {
    return {
        user: [],
    };
  },

  methods: {
    click() {
        axios
        .get('https://techwizlanka/send', {
            body: JSON.stringify(this.user),
            headers: {
                'content-type': 'application/json',
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
        })
        .then(res => res.json())
        .then(data => {
            console.log("email sent");
        })
        .catch(err => console.error(err.toString()));
    },
  },

  ...
}

答案 1 :(得分:0)

尝试使用此方法

axios.post(url, data)
      .then(response => {

})

并在您的route / web.php中发布您的路线

在使用get方法函数时不期望请求,但是在您遇到的情况下,您可以传递请求。