我知道如何發送電子郵件,但我想知道在提交許多用戶的表單后如何接收電子郵件?
這是 .env 檔案
MAIL_DRIVER=imap
MAIL_HOST=imap.gmail.com
MAIL_PORT=993
MAIL_USERNAME[email protected]
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS[email protected]
MAIL_FROM_NAME="${APP_NAME}"
這是控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;
class SendEmailController extends Controller
{
public function index()
{
return view('send_email');
}
function send(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'message' => 'required'
]);
$data = array(
'name' => $request->name,
'message' => $request->message
);
Mail::to('[email protected]')->send(
new SendMail($data));
return back()->with(
'success',
'Thanks for contacting us!');
}
}
?>
發送郵件.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendMail extends Mailable
{
use Queueable, SerializesModels;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('form')
->view('dynamic_email_template')
- >with('data', $this->data);
}
}
?>
當我嘗試提交時,它說
預期回應代碼 220
...但得到一個空洞的回應。
另外如何在控制器中從我的電子郵件中為發件人電子郵件撰寫代碼?
錯誤是什么?
我是否需要更改 gmail 或 mail.php 檔案中的某些設定?
uj5u.com熱心網友回復:
當您發送電子郵件時,用戶在網站上執行一些操作,該網站運行一些 PHP 代碼,然后訪問 SMTP 服務器以發送電子郵件。一切從網站開始。
如果您想對收到的郵件做出回應,那么當 SMTP 服務器收到電子郵件時,該活動就會開始(在您的系統上)。它不是由網站觸發的。
您需要扭轉問題并從電子郵件端而不是網站端解決它。
基本的電子郵件設定如下所示:
- 電子郵件到達 SMTP 服務器
- SMTP 服務器存盤該電子郵件
稍后,可以使用 IMAP 服務器從該存盤中讀取資料。
稍微復雜一點的方法如下所示:
- 電子郵件到達 SMTP 服務器
- SMTP 服務器通過垃圾郵件檢查器傳遞電子郵件
- SMTP 服務器根據垃圾郵件檢查器的結果存盤或丟棄該電子郵件
您可以在此處插入額外的步驟,例如使用電子郵件的內容呼叫 PHP 程式。一種常見的方法是使用procmail。如果您使用 procmail 或其他方式,則取決于您設定的特定電子郵件服務器。有關運行 PHP 程式的 procmail 配方,請參閱此問題。
另一種方法(效率低得多且觸發速度不快)是輪詢 IMAP 服務器。
這需要按計劃而不是從網站觸發 PHP。例如,您可以使用 cron,而不是使用 procmail。
您需要訪問郵箱,然后確定其中哪些電子郵件您尚未處理。
PHP 有一個IMAP 擴展,允許您掃描郵箱并從中讀取郵件。
uj5u.com熱心網友回復:
沒有名為imap 的電子郵件驅動程式。它必須是smtp。示例 gmail 設定;
MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME[email protected]
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=ssl
您可以在以下位置找到可用的郵件驅動程式 config/mail.php
uj5u.com熱心網友回復:
如果您想使用現有郵箱接收訊息,您還可以使用EmailEngine 之類的東西。它監控 IMAP 連接,如果收到新訊息,它會向您的 Laravel 應用程式發送一個 webhook。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409250.html
標籤:
上一篇:C#MicrosoftGraph-如何從msal瀏覽器發送帶有訪問令牌的電子郵件
下一篇:從Ajax附加的表單元素不起作用
