我无法使用用户地址发送电子邮件作为FROM和回复
在FormRequest中:
public function persist()
{
$reservation = Resa::create(
$this->only(['nom', 'email', 'phone', 'formule', 'date_arr', 'date_ret', 'nb_adu', 'nb_enf', 'lemessage'])
);
Mail::to('contact@cotiga.fr')
->from($reservation->email, $reservation->nom)
->replyTo($reservation->email, $reservation->nom)
->send(new Reservation($reservation));
}
我有错误:
FatalThrowableError in ReservationForm.php line 48:
Call to undefined method Illuminate\Mail\PendingMail::from()
我尝试了充分的可能性,但我无法更改字段FROM和REPLYTO 你能帮助我吗 ? 感谢的
答案 0 :(得分:9)
Mail
Facade不再实施replyTo()
方法。相反,此方法已移至Mailable
类本身。官方文档建议使用build()
方法来设置Mailable,但这并不总是方便的(例如,每次replyTo字段可能不同)
但是,如果您仍想使用类似的语法,可以使用:
$mailable = new myMailableClass;
$mailable->replyTo('reply@to.com');
Mail::to('email@tocom')
->send($mailable);
有关Mailable类的可用方法的完整列表,请参阅Mailable Documentation
答案 1 :(得分:4)
在Laravel 5.4 Mailables中,可以在replyTo
方法的可邮寄内设置subject
,cc
,bcc
,build
和其他内容。对于to
也是如此,它也可以在Mail门面上设置。
以下是使用属性数组的可联系表单的简单示例:
您可以直接在to
外观上使用Mail
静态方法,但作为示例,我们将在mailable中设置它:
Mail::send(new ContactCompany($attributes));
然后在replyTo
方法中设置build
:
class ContactCompany extends Mailable
{
use Queueable, SerializesModels;
public $attributes;
/**
* Create a new message instance.
*
* @param $attributes
*/
public function __construct($attributes)
{
$this->attributes = $attributes;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->to($this->attributes['departmentEmail'], config('app.name'));
$this->replyTo($this->attributes['email'], $this->attributes['name']);
$this->subject(sprintf("New contact message from %s", $this->attributes['name']));
return $this->markdown('emails.contact.company');
}
}
请注意,Mail::alwaysFrom()
和Mail::alwaysReplyTo()
可以在Mail::send()
之前用于设置 全部的from
和replyTo
< / em> 电子邮件,因此请务必小心使用它们。
答案 2 :(得分:0)
现在发送电子邮件的首选方法是mailables,您可以设置并回复使用from()或replyTo()方法。
但是,如果使用普通Mail
外墙,则应尝试使用alwaysFrom
和alwaysReplyTo
方法。但是,在发送此类电子邮件之后,您应该再次设置以前的值,以确保此更改不会影响其他电子邮件。
但是查看方法名称可能不是最好的解决方案,所以更好的方法是查看mailables并使用它们在最新的Laravel版本中发送电子邮件。
答案 3 :(得分:0)
问题已解决。 我编辑应用&gt;邮件&gt; Reservation.php
public function build()
{
// return $this->markdown('emails.reservation-email');
return $this->from($this->reservation->email)->markdown('emails.reservation-email');
}
应用&GT;&的Http GT;请求&GT; ReservationForm.php
public function persist()
{
$reservation = Resa::create(
$this->only(['nom', 'email', 'phone', 'formule', 'date_arr', 'date_ret', 'nb_adu', 'nb_enf', 'lemessage'])
);
Mail::to('contact@cotiga.fr')->send(new Reservation($reservation));
}