Ciao a tutti, sto realizzando il classico form di richiesta informazioni nel mio sito, dove l'utente inserisce il proprio nome, cognome, mail, oggetto, messaggio.
Per fare ciò ho utilizzato il comando Laravel: php artisan make:mail Contact, quindi ho il controller MailController in http/controllers, mentre in app ho la cartella mail con la classe Contact.php.
Il problema sorge che una volta compilato il form e cliccato sul pulsante submit del form, non mi viene inviata la mail.
Vi posto ora il codice:
Vista: index.blade.php
codice:
//codice del form contattami
<div class="col-md-6">
<div class="contact_from_area wow fadeInUp animated">
<div class="contact_title">
<h3>Contattami:</h3>
</div>
<div class="row">
<form action="{{url('contact-me')}}" method="post" id="contactForm">
{{csrf_field()}}
<div class="form-group col-md-12">
<input type="text" class="form-control" name="name" id="name" placeholder="Nome*" required>
</div>
<div class="form-group col-md-12">
<input type="text" class="form-control" name="last" id="last" placeholder="Cognome*" required>
</div>
<div class="form-group col-md-12">
<input type="email" class="form-control" name="email" id="email" placeholder="La tua email*" required>
</div>
<div class="form-group col-md-12">
<input type="text" class="form-control" name="subject" id="subject" placeholder="Oggetto">
</div>
<div class="form-group col-md-12">
<textarea class="form-control" rows="1" id="message" name="message" placeholder="Scrivi qui il tuo messaggio....." required></textarea>
</div>
<div class="form-group col-md-12">
<button class="btn btn-default contact_btn" type="submit"><span>Invia messaggio</span></button>
</div>
</form>
<div id="success">
<p>Il messaggio è stato inviato correttamente!</p>
</div>
<div id="error">
<p>Ci dispiace! Il tuo messaggio non è stato inviato, qualcosa è andato storto!!</p>
</div>
</div>
</div>
</div>
questo è il controller MailController:
codice:
namespace mysite\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Mail;
use Collection;
use App\Mail\Contact;
/**
* Description of MailController
*
* @author Ezio
*/
class MailController
{
public function contact(Request $request)
{
// validation and other stuff...
// [...]
// sender
$sender = [ 'name' => $request->name, 'last' =>$request->last , 'mail' => $request->email ];
// recipients
$recipients = new Collection;
$recipients->push(['name' => 'Tirimacco Ezio', 'mail' => 'tirimaxx@gmail.com']);
// attributes
$attributes = [
'name' => $request->name,
'message' => $request->message
];
Mail::send(new Contact($sender, $recipients, 'mail.contact', $attributes));
// return result
// [...]
}
}
questo è Contact.php:
codice:
namespace mysite\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class Contact extends Mailable
{
use Queueable, SerializesModels;
private $sender, $recipients, $template, $attributes;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($sender, $recipients, $template, $attributes)
{
$this->sender = $sender;
$this->email = $recipients;
$this->template = $template;
$this->attributes = $attributes;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// Senders addresses
$this->from($this->sender['name'], $this->sender['last'] , $this->sender['mail']);
// Recipients addresses
foreach($recipients as $recipient) {
$this->to($recipient['name'], $recipient['mail']);
}
// Subject
$this->subject($this->sender['subject']);
// Return view
return $this->view($this->template);
}
}