注:これは悲しいことに 重複 ではありません。私はすでにそこに記載されているすべてを試しました。
Laravel/Swiftmailer
を使用してメールサーバーへの接続を設定しようとしました。私の.envのMailingセクションは次のようになります。
MAIL_DRIVER=smtp
MAIL_Host=<THE MAILHOST>
MAIL_PORT=465
MAIL_USERNAME=<THE USERNAME>
MAIL_PASSWORD=<THE PASSWORD>
MAIL_ENCRYPTION=ssl
個人情報は明らかな理由で検閲されますが、構成は機能します。私はThunderbirdでこの構成のサーバーに接続してテストしましたが、それは魅力のように機能します。
これが私がメイラブルと呼ぶ場所です:
public function from_id(string $id): User
{
.
.
.
Mail::to(<WORKING EMAIL ADRESS>)->send(new OrderShipped());
}
これは、メイラブルがどのように見えるかです(基本的にはlaravel docsからの例です):
public function build()
{
return $this->view('email_templates.simple_test');
}
私はコードをデバッグしましたが、実際には2つの例外がスローされています。後者のみを示します。
応答コード250/251/252が必要ですが、メッセージ "554 5.7.1:拒否された受信者アドレス:アクセスが拒否されました"とともにコード "554"を取得しました
応答コード354が予期されていましたが、メッセージ「554 5.5.1エラー:有効な受信者がありません」とともにコード「554」を受け取りました
完全に機能するメールサーバーからThunderbird経由で<WORKING EMAIL ADRESS>
にメールを送信しようとしましたが、メールはほんの一瞬で送受信され、問題やエラーは発生しませんでした。基本的に、まったく同じシナリオを別のツールで再現しようとしました。したがって、私の見解では、エラーはコードベースにあるはずです。
前もって感謝します
私の設定は少し奇妙に見えます。以下の構文で試してください(ここで私は$_orderObject
注文の詳細を表すプレースホルダーとしての変数):
app/Mail/OrderShipped.php
<?php
namespace App\Mail;
use Illuminate\Mail\Mailable;
class OrderShipped extends Mailable
{
protected $_name;
protected $_orderObject;
public function __construct($name, $order)
{
$this->_name = $name;
$this->_orderObject = $order
}
public function build ()
{
return $this->to (<CONFIRMED WORKING EMAIL>)
->subject ('New Order!')
->view ('email_templates.simple_test')
->with ([
'name' => $this->_name,
'order' => $this->_orderObject
]);
}
}
//それを呼び出す
public function from_id(string $id): User
{
$name = << $this->getUserNameById ($id) >> // fake method
$orderObject = << $this->getLatestOrderByUserId($id) >> // fake method
Mail::send(new OrderShipped($name, $orderObject));
}
STARTTLSが必要か、TLSだけが必要かをシステム管理者に確認する必要があります。
STARTTLSはプレーンな接続を開始してからセキュアなTLS「チャネル」に切り替えます。TLSはセキュアな接続に直接接続しますが、互換性は低くなります。
答えがSTARTTLSの場合はポート587を使用します。それ以外の場合はポートを保持しますが、システム管理者に確認します
別の理由としては、アカウントが禁止されたか、IPがブロックされたことが考えられます