首页 > 解决方案 > 从 Web 服务器在 laravel 中发送电子邮件

问题描述

我有一个需要向其发送电子邮件的 Laravel 项目,它可以在 localhost 上运行,但是当我将它上传到 Web 服务器时它不起作用。我的错在哪里? 在此处输入图像描述

控制器:

class merluzaController extends Controller
{
    public function mail(request $request){
        $datos=[
            "nombre"=>$request->nombre,
            "apellido"=>$request->apellido,
            "correo"=>$request->correoE,
            "numeroT"=>$request->numeroT,
            "mensaje"=>$request->mensaje,
        ];
        Mail::send('emails.mails', $datos, function ($message) {
            $message->to("ltomicb@gmail.com", "Lucas")->subject('Página de MerluzaDePincho');

        });
        Session::flash('mensaje_enviado','Mensaje enviado correctamente.');
        return redirect('/contacto');
    }
}

环境:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandbox8f7345b6f0f14762871d8489a6a672c9.mailgun.org
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=merluzadepincho@gmail.com
MAIL_FROM_NAME="Merluza de Pincho"

标签: laravel

解决方案


如果问题是“找不到类'Illuminate\Support\facades\Mail',那么您必须导入它

你可以尝试使用

use Illuminate\Support\Facades\Mail;

或者你可以试试

\Mail::send('emails.mails', $datos, function ($message) {
            $message->to("ltomicb@gmail.com", "Lucas")->subject('Página de MerluzaDePincho');

        });

代替

Mail::send('emails.mails', $datos, function ($message) {
    $message->to("ltomicb@gmail.com", "Lucas")->subject('Página de MerluzaDePincho');

});

因为\Mail::send()不需要导入

你可以查看这篇文章你可以在这里找到一些很好的答案

如果这些都不起作用,那么您需要验证 guzzle 包是否配置正确并且其版本高于 6 并查看您的服务器 php 模块并将它们与您的开发模块进行比较php -m应该将它们全部列出

最后联系您的托管公司并为他们解释问题,因为一些公司出于安全原因阻止此类回调或强制用户购买高级帐户或类似的东西

希望这可以帮助。


推荐阅读