我正在尝试从使用Laravel框架的应用程序发送电子邮件。我已经安装了Sximo作为与Laravel合作的主题,并且该应用程序在Amazon AWS上运行。所有设置似乎都很好,因为它按预期工作。
我在* C:\ xampp \ htdocs \ public \ api \ savequestionnaire.php *上设置了API,它从移动应用程序接收数据并将数据保存到MySQL表中。这也是按预期工作的。
这个想法是,如果API收到一些数据,则会生成一封电子邮件到预定义的电子邮件地址。有了这个,我有一个文件用于接收数据,将其写入数据库,然后生成如下的电子邮件。
对于邮件部分,我在 CMAKE_SYSTEM_LIBRARY_PATH
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');
功能。这不会产生错误 - 但不会发送或接收电子邮件。
答案 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
文件位置的路径