Laravel邮件无法从现场发送

时间:2014-11-11 13:46:24

标签: php email laravel-4

我试图从laravel发送邮件,当我从字段添加动态时,我收到此错误:

“预期的响应代码250,但得到代码”501“,消息”501在命令参数中遇到语法错误..“

这是代码:

$user = Input::get('user'); 
Mail::send('template.contact',  $user , function($message) use ($user)
{
    $email = $user['email'];
    $message->from($email , 'name'); thats doesnt
    //$message->from('us@example.com', 'Laravel'); that work

    $message->to('test@gmail.com', 'contact us' )->subject($user['subject']);
});

用户来自角度 - 服务:

 this.sendConatctMail = function(data) {
        return $http.post('send-contact-mail', {user: data});
      }

和控制器:

contactService.sendConatctMail($scope.user);

3 个答案:

答案 0 :(得分:1)

这是解决这个问题的一种方法。

我们假设data上的this.sendConatctMail = function(data) {是这样的对象:

var data {
    email: 'some@email.com',
    // other field: values
}

在发布之前,您应该将其转换为JSON字符串,如下所示:

return $http.post('send-contact-mail', {user: JSON.stringify(data)});

然后在Laravel / PHP端,将其解码回array并像这样使用它:

if (Input::has('user'))
{
    // Decode json string
    $user = @json_decode(Input::get('user'), true);

    // Proceed if json decoding was success
    if ($user)
    {
        // send email
        Mail::send('template.contact',  $user , function($message) use (&$user)
        {
            $message->from($user['email'], 'name')
                    ->to('test@gmail.com', 'contact us')
                    ->subject($user['subject']);
        });
    }
}

答案 1 :(得分:1)

我不知道这是否会对您有所帮助,但每当我通过Laravel发送电子邮件时,我都需要更改use(...)部分。你有:

$user = Input::get('user'); 
Mail::send('template.contact',  $user , function($message) use ($user)
...

尝试将其更改为此,看看会发生什么:

$user = Input::get('user'); 
Mail::send('template.contact',  array('user' => $user), function($message) use (&$user) {
  $message->from($user['email'], $user['name']);
  $message->to('test@gmail.com', 'contact us')->subject($user['subject']);
}

我做了2次更改:

array('user' => $user)

use(&$user)

我不知道这是否会对您有所帮助,但我的应用程序上的工作电子邮件看起来几乎与您的相同,除了&$variable而不只是$variable

祝你好运!

答案 2 :(得分:0)

问题在于您的$email = $user['email'];

尝试检查您的$user['email']

如果此$message->from('us@example.com', 'Laravel');有效

然后

$email = $user['email'];
$message->from($email , 'name');

这必须有效......

我已经尝试过同样没有太多麻烦...

在我的应用程序中,我需要在我的所有ajax请求中传递_token变量任何此类问题?