我试图从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);
答案 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
变量任何此类问题?