Laravel发送电子邮件

时间:2017-01-10 12:15:38

标签: php laravel email amazon-web-services

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

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

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

对于邮件部分,我在 CMAKE_SYSTEM_LIBRARY_PATH

上关注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中找不到“邮件”类

我也尝试过添加

use Mail;

到文件的顶部,但后来我收到错误:“警告:带有非复合名称'Mail'的use语句在C:\ xampp \ htdocs \ public \ api \ savequestionnaire中无效。第2行的php

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

我也尝试过使用PHP内置的

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

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

3 个答案:

答案 0 :(得分: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) {

答案 1 :(得分:0)

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

    Illuminate\Mail\MailServiceProvider::class,
提供商下的

并在别名下检查

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

修改:

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

  php artisan make:controller controllerName

答案 2 :(得分:0)

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

添加

require 'vendor/autoload.php';

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