1

Laravel 5我尝试使用以下路线为用户发送邮件:

Route::post('/sendEmailToUser', array(
    'as' => 'sendEmailToUser', function () {
        $data = \App\User::find(Request::input('user_id'));
        $cdata = array('message' => Request::input('message'), 'email' => $data->email);

        Mail::send('emails.custom_email_to_user', $cdata, function ($message) use ($data) {
            $message->to($data['email'], 'Sample')->subject('Sample');
        });

        if (count(Mail::failures()) > 0) {
            Log::emergency("email dont send to user");
            return 0;
        } else {
            Log::info("email successfull send to user id" + Request::input('user_id'));
            return 1;
        }
    }
));

结果$cdata是:

Array
(
    [message] => this is test mail
    [email] => myname@server.com
)

不幸的是我收到了这个错误:

htmlentities() expects parameter 1 to be string, object given (View: D:\xampp\htdocs\epay-pro\resources\views\emails\custom_email_to_user.blade.php)

我的简单电子邮件页面是:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h2>Sample</h2>
        <div>
            {{$message}}
            {{ URL::to('www.epay.li') }}<br/>
        </div>
    </body>
</html>
4

2 回答 2

0

虽然发送电子邮件 $message 变量似乎与 laravel $message 变量冲突,但我不太清楚为什么。在你的 $cdata 而不是messagekey 使用其他东西,比如也许$text

$cdata = array('text' => Request::input('message'), 'email' => $data->email);
于 2015-11-17T09:54:50.783 回答
0

您必须更改代码中的两件事,它将起作用。

  1. 首先:(选择如何使用你的变量 $data)

    您有时使用与有时相同的$data变量:arrayobject

    作为对象:

    $cdata = array('message' => Request::input('message'), 'email' => $data->email);
    

    作为数组:

    $message->to($data['email'], 'Sample')->subject('Sample');
    

    通常你应该使用它,object因为它User::find会返回一个对象。 注意:如果你想将它用作数组,你只需toArray()find.

  2. 第二:(更改变量 $message 名称)

    注意: $message 变量总是传递给电子邮件视图,并允许内联嵌入附件。因此,您应该避免在视图有效负载中传递消息变量。

    来源:文档 laravel 5.1 - mail#introduction

    因此,您必须更改$message变量名称,因为 Framework 会将其视为Illuminate\Mail\Message类的对象。

希望这可以帮助。

于 2015-11-17T18:13:04.210 回答