首页 文章

Laravel发送电子邮件

提问于
浏览
0

我正在尝试从使用Laravel框架的应用程序发送电子邮件 . 我已经安装了Sximo作为与Laravel合作的主题,并且该应用程序在Amazon AWS上运行 . 所有设置似乎都很好,因为它按预期工作 .

我在* C:\ xampp \ htdocs \ public \ api \ savequestionnaire.php *上设置了API,它从移动应用程序接收数据并将数据保存到MySQL表 . 这也按预期工作 .

我们的想法是,如果API收到一些数据,则会生成一封电子邮件到预定义的电子邮件地址 . 有了这个,我有一个文件用于接收数据,将其写入数据库,然后生成如下的电子邮件 .

对于Mail部分,我在 HERE 上关注Laravel网站上的示例

savequestionnaire.php

<?php
    $json = file_get_contents('php://input');

    $questionnairevalues = json_decode($json, true);
    $position = $questionnairevalues['position'];   
    $question_one = $questionnairevalues['question_one'];
    $question_two = $questionnairevalues['question_two'];
    $question_three = $questionnairevalues['question_three'];
    $question_four = $questionnairevalues['question_four'];
    $question_five = $questionnairevalues['question_five'];

    $query = "INSERT INTO tb_q (position, question_one, question_two, question_three, question_four, question_five) "
            . "VALUES('$position', '$question_one', '$question_two', '$question_three', '$question_four', '$question_five')";

    $result = $mysqli->query($query) or die($mysqli->error.__LINE__);

    if ($result) {
        echo 'Success';
        // Getting error here
        Mail::send('emails.contact.blade', $position, function ($message) {
            $message->from('myEmail@test.com', 'Laravel');
            $message->to('myOtherEmail@test.com');
        });
       echo '\r\nMail sent success';
    }
    else {
        echo 'Error';
    }

    mysqli_close($mysqli);

当我运行上面的代码时,我收到错误:“成功致命错误:在第56行的C:\ xampp \ htdocs \ public \ api \ savequestionnaire.php中找不到类'Mail'”

我也尝试过添加

use Mail;

到文件的顶部,但后来我得到错误:“警告:使用非复合名称'Mail'的use语句在第2行的C:\ xampp \ htdocs \ public \ api \ savequestionnaire.php中没有效果”

如何使用Laravel正确实现Mail功能?

我也尝试过使用内置的PHP

mail('myEmail@test.com', 'My Subject', 'My message');

功能 . 这不会产生任何错误 - 但不会发送或接收电子邮件 .

3 回答

  • 0

    在控制器顶部添加:

    use Illuminate\Support\Facades\Mail;
    

    在您的情况下直接使用:

    \Illuminate\Support\Facades\Mail::send('emails.contact.blade', $position, function ($message) {
    

    而不是 Mail::send('emails.contact.blade', $position, function ($message) {

  • 0

    在您的Config / app.php中检查是否存在

    Illuminate\Mail\MailServiceProvider::class,
    

    提供者 . 并检查你有别名

    'Mail' => Illuminate\Support\Facades\Mail::class,
    

    Edit :

    根据错误,它正在查看您现在所在的questionnaire.php内部的外观 . 因此,请尝试将此代码放在控制器中 . 要在终端类型中创建控制器,

    php artisan make:controller controllerName
    
  • 0

    如果此页面是独立的,则必须使用composer才能使用Mail:

    require 'vendor/autoload.php';
    

    在页面顶部(替换匹配 vendor/autoload.php 文件位置的路径

相关问题