php - sendmail Laravel 不发送电子邮件
问题描述
我编写了以下代码,使用 Laravel 控制器方法向指定的电子邮件地址发送电子邮件:
public function sendEmail(Request $request){
$question = $request->get('question');
$phone = $request->get('phone');
$from_email = $request->get('email');
$from_name = $request->get('name');
$to_email = 'XXX';
$to_name = 'XXX';
$data = array('name'=>"Sam Jose", "body" => $question . "\n" . $phone);
Mail::send(array(), $data, function($message) use ($to_name, $to_email, $from_email, $from_name) {
$message->to($to_email, $to_name)
->subject('Vraag | XXX');
$message->from($from_email, $from_name);
});
}
除此之外,我将以下内容添加到我的 .env 文件中:
MAIL_DRIVER=sendmail
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=XXX
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=ssl
如果我在本地主机上运行此代码,它会向指定的地址发送邮件,如果我在我的子域上运行它,它不会在不发送任何错误消息的情况下发送电子邮件。
解决方案
在您的控制器顶部
use Mail;
在控制器函数中使用此代码发送邮件。mail.welcome 是您要发送的邮件正文。
$data=array('body'=>$message,'name'=>'XXXXX');
Mail::send('mail.welcome',$data,function ($message)use ($email,$subject)
{
$message->to($email)->from('XXXXX@gmail.com', 'XXXX')->subject($subject);
});
if(count(Mail::failures()) > 0){
return redirect()->route('mail.view')->with('error','Error in sending mail');
}
else {
return redirect()->route('mail.view')->with('response','Mail Send Successfully');
}
如果您使用 gmail 发送邮件。更改您的 .env 文件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxxxxx
MAIL_ENCRYPTION=tls
推荐阅读
- java - 如何用 mockito 模拟静态方法?
- oracle - 如何在 Oracle 中克隆可插拔数据库
- typescript - 如何使用打字稿在 vuejs 中的数据中添加“文件”类型?
- php - 使用错误表别名生成查询的学说 - Symfony 5
- redis - 如何通过ps命令获取redis的配置文件路径
- python - 如何在 Jupyter Notebook 中通过 WordCloud 将文本放入图像中
- html - 如何在底部设置此导航栏?
- macos - 在 macOS 上,如何从终端打开一个新的 Chrome 窗口而不是一个新的选项卡(即 Bash 命令)
- r - 如何在 R 的“htest”对象中设置备择假设文本字符串?
- javascript - 有没有办法通过下拉菜单在下一个输入的文本上即时更改文本样式?