Kibo
Kibo

Reputation: 28

Laravel 4 Mail function not working properly

I'm currently working on a web application which requires users to verify before they are able to use their account. I'm using Cartalyst's Sentry to register the users, and sending the email using the built in Mail function, but whenever I register I get the following error:

Argument 1 passed to Illuminate\Mail\Mailer::__construct() must be an instance of 
Illuminate\View\Environment, instance of Illuminate\View\Factory given, 
called in 
/var/www/vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php 
on line 34 and defined 

I can't figure out what causes this. At the top of my code I included "use Mail" otherwise I would get another error:

Class '\Services\Account\Mail' not found 

Code

// Create the user
$user = $this->sentry->register(array(
    'email'             => e($input['email']),
    'password'          => e($input['password'])
));

$activationCode = $user->getActivationCode();

$data = array(
    'activation_code'   => $activationCode,
    'email'             => e($input['email']),
    'company_name'      => e($input['partnerable_name'])
);

// Email the activation code to the user

Mail::send('emails.auth.activate', $data, function($message) use ($input)
{
    $message->to(e($input['email']), e($input['partnerable_name']))
    ->subject('Activate your account');
});

Anybody got an idea what the solution for this error is?

Thanks in advance,

Kibo

Upvotes: 0

Views: 442

Answers (2)

Satish Shinde
Satish Shinde

Reputation: 2996

Remove /bootstrap/compiled.php I think it will work for you.

Upvotes: 1

CashIsClay
CashIsClay

Reputation: 2320

You need to remove this from your Mail::send call. The function should be the third parameter so I'm not sure what you're trying to do here -- the $input['email'] field will already be available within the function due to your "use ($input)"

$email = e($input['email']

Upvotes: 0

Related Questions