public function testSendMessage() { // Create an old email to purge Config::set('mail-tracker.expire-days', 1); $old_email = \jdavidbakr\MailTracker\Model\SentEmail::create(['hash' => str_random(32)]); $old_url = \jdavidbakr\MailTracker\Model\SentEmailUrlClicked::create(['sent_email_id' => $old_email->id, 'hash' => str_random(32)]); // Go into the future to make sure that the old email gets removed \Carbon\Carbon::setTestNow(\Carbon\Carbon::now()->addWeek()); $faker = Faker\Factory::create(); $email = $faker->email; $subject = $faker->sentence; $name = $faker->firstName . ' ' . $faker->lastName; \View::addLocation(__DIR__); \Mail::send('email.test', [], function ($message) use($email, $subject, $name) { $message->from('*****@*****.**', 'From Name'); $message->sender('*****@*****.**', 'Sender Name'); $message->to($email, $name); $message->cc('*****@*****.**', 'CC Name'); $message->bcc('*****@*****.**', 'BCC Name'); $message->replyTo('*****@*****.**', 'Reply-To Name'); $message->subject($subject); $message->priority(3); }); $this->seeInDatabase('sent_emails', ['recipient' => $name . ' <' . $email . '>', 'subject' => $subject, 'sender' => 'From Name <*****@*****.**>', 'recipient' => "{$name} <{$email}>"]); $this->assertNull($old_email->fresh()); $this->assertNull($old_url->fresh()); }
public function getL($url, $hash) { $url = base64_decode(str_replace("\$", "/", $url)); $tracker = Model\SentEmail::where('hash', $hash)->first(); if ($tracker) { $tracker->clicks++; $tracker->save(); $url_clicked = Model\SentEmailUrlClicked::where('url', $url)->where('hash', $hash)->first(); if ($url_clicked) { $url_clicked->clicks++; $url_clicked->save(); } else { $url_clicked = Model\SentEmailUrlClicked::create(['sent_email_id' => $tracker->id, 'url' => $url, 'hash' => $tracker->hash]); } Event::fire(new LinkClickedEvent($tracker)); } return redirect($url); }