コアポイント
php artisan email:parse
などの新しいコマンドを作成することが含まれます。 php-mime-mail-parser
などを使用します。これにより、電子メールの件名や本文などのヘッダーを取得できます。解析されたメールは、データベースに簡単に保存できます。 はじめに
プロジェクト管理またはサポート管理ツールでこれを頻繁に表示します。メールに返信でき、Webアプリケーションに自動的に表示されます。これらのツールは、これらの電子メールをシステムに直接インポートすることができます。
この記事では、Laravel 4アプリケーションにメールを配信する方法を学びます。これを行うために、以下に示すように作曲家を介してインストールされた真新しいLaravel 4プロジェクトから始めました。
composer create-project laravel/laravel your-project-name --prefer-dist
職人コマンドを作成します
アプリケーションにメールをインポートできるようにするには、コマンドラインを介してアプリケーションにメールを配信する必要があります。幸いなことに、Laravelには、複数のタスクを実行できるArtisanというコマンドラインツールがあります。 Artisanが実行できるすべてのタスクのリストを表示するには、プロジェクトのルートディレクトリでを実行できます。 php artisan list
。その後、職人を開始し、この場合はphp artisan email:parse
と呼ばれる特定のタスクを実行します。 email:parse
すべてがうまくいった場合、
php artisan command:make EmailParserCommand
という名前のファイルが見つかります。お気に入りの編集者で開き、app/commands
およびEmailParserCommand.php
プロパティを表示します。必要に応じてカスタマイズできます。明確な名前と説明を与えることにより、コマンドは職人コマンドリストによくリストされます。 $name
たとえば、$description
これを変更しました:
/** * 控制台命令名称。 * * @var string */ protected $name = 'email:parse'; /** * 控制台命令描述。 * * @var string */ protected $description = '解析传入的电子邮件。';
プロジェクトのルートで
職人を通じてコマンドが呼び出されるときはいつでも、常に から取得できます。このIOストリームを開き、ストリーム全体を読むまで少量のメールを収集します。
元のメールがありますが、メールを複数の部品に分割することを好みます。トピックや電子メールなどのヘッダーを取得したいです。これらすべての部品を分割するために独自のコードを作成できますが、誰かがアプリケーションで使用できるパッケージを作成しました。このパッケージは、メール全体を論理部品に分割することができます。次の行を
添付ファイルの処理 サーバー上にメールに添付された添付ファイルを保存することもできます。電子メールパーサークラスは、利用可能な添付ファイルを処理できます。まず、次の行をクラスの上部に再度追加します。
この部分が実際に何をするか見てみましょう。最初の行は、電子メールから添付ファイルを取得します。 に保存されます。正しい権限を設定して、メールサーバーがこのディレクトリに実際にファイルを追加できることを確認してください。 メールサーバーを構成します
以下に、使用しているツールまたはメールサーバーに応じて、アプリケーションに電子メールを配信するさまざまな方法があります。たとえば、 を追加しました。生産環境にいる場合は、このセクションを削除できます。
eximでは、ファイルを開きます Aliasデータベースを再構築します。 php artisan email:parse
を実行すると、このコマンドがまだ登録されていないことを示すメッセージが表示されます。次のステップは、このコマンドが職人に登録されていることを確認することです。 app/start/artisan.php
ファイルを開き、ファイルの最後にArtisan::add(new EmailParserCommand);
を追加して、新しく作成したコマンドを登録しましょう。これで、リストしたコマンドを再度実行して、リストしたコマンドを表示できます。ここに記入した名前と説明が表示されることに注意してください。 list
email:parse
fire
php://stdin
composer create-project laravel/laravel your-project-name --prefer-dist
$rawEmail
composer.json
composer update
php artisan command:make EmailParserCommand
app/command/EmailParserCommand.php
元のメールを別々のセクションに解析できます。次のコード行を/**
* 控制台命令名称。
*
* @var string
*/
protected $name = 'email:parse';
/**
* 控制台命令描述。
*
* @var string
*/
protected $description = '解析传入的电子邮件。';
fire
最初に新しいパーサーを作成します。次に、元のメールをパーサーのテキストに設定し、最後に、さまざまな異なる方法を呼び出して、ヘッダーまたはボディからデータを取得します。 /**
* 执行控制台命令。
*
* @return void
*/
public function fire()
{
// 从 stdin 读取
$fd = fopen("php://stdin", "r");
$rawEmail = "";
while (!feof($fd)) {
$rawEmail .= fread($fd, 1024);
}
fclose($fd);
}
"messaged/php-mime-mail-parser": "dev-master"
app/command/EmailParserCommand.php
メソッド:composer create-project laravel/laravel your-project-name --prefer-dist
$attachments
変数は、アタッチメントオブジェクトの配列です。次に、サーバーにファイルの保存を処理する新しいFiles -Systemオブジェクトを作成します。次に、すべての添付ファイルを繰り返し始めます。ファイルのパスとコンテンツを受け入れるFiles -Systemオブジェクトのput
メソッドを呼び出します。この場合、ファイルをディレクトリに追加し、添付ファイルが実際に持っているファイル名を使用します。 2番目のパラメーターは、実際のファイルのコンテンツです。 public/uploads
public/uploads
support@peternijssen.nl
/var/www/supportcenter
cpanel--env=local
CPANELはホームディレクトリに対するパスを使用していることに注意してください。 php artisan command:make EmailParserCommand
/etc/valiases/peternijssen.nl
/**
* 控制台命令名称。
*
* @var string
*/
protected $name = 'email:parse';
/**
* 控制台命令描述。
*
* @var string
*/
protected $description = '解析传入的电子邮件。';
newaliases
アプリケーションに渡される新しいエイリアスを作成できるようになりました。
/etc/postfix/main.cf
を開いて、次の行を追加します:
/** * 执行控制台命令。 * * @return void */ public function fire() { // 从 stdin 读取 $fd = fopen("php://stdin", "r"); $rawEmail = ""; while (!feof($fd)) { $rawEmail .= fread($fd, 1024); } fclose($fd); }
service postfix reload
Aliasデータベースを再構築します。
sendmail/etc/aliases
"messaged/php-mime-mail-parser": "dev-master"
newaliases
最後に、職人ファイルとPHP自体を<
/etc/smrsh
composer create-project laravel/laravel your-project-name --prefer-dist
または:
php artisan command:make EmailParserCommand
ファイルを開き、コンテンツとして次の行を追加します。
/** * 控制台命令名称。 * * @var string */ protected $name = 'email:parse'; /** * 控制台命令描述。 * * @var string */ protected $description = '解析传入的电子邮件。';
結論
/** * 执行控制台命令。 * * @return void */ public function fire() { // 从 stdin 读取 $fd = fopen("php://stdin", "r"); $rawEmail = ""; while (!feof($fd)) { $rawEmail .= fread($fd, 1024); } fclose($fd); }
利用可能なコマンドラインツールを備えたフレームワークは、メールを処理できます。ここで提供されるコードは、基本的なセットアップにすぎません。プロジェクトに応じて、特定のメールアドレスがアプリにメールを送信することを許可するだけかもしれません。アプリケーションに渡す前に、Postfixなどのツールでメールをフィルタリングしていることを確認してください。 ある種のチケットシステムを使用する場合は、電子メールの件名からサポートチケットIDを簡単に抽出し、そのIDに基づいて電子メールで複数の異なるアクションを実行することができます。
メールサーバーのログファイルに注意を払ってください。実際のパイプラインがそれを解決する方法に失敗した場合、いくつかのヒントを提供します。
(スペースの制限により、FAQの一部は省略されています。元のFAQSコンテンツは記事のトピックに弱く関連しており、コンテンツの一部は記事のコンテンツと複製されているため、擬似はありません。 - オリジナル処理が実行されます以上がLaravelアプリケーションへの電子メールを配管しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。