如何将电子邮件传送到Laravel 5应用程序

时间:2015-08-09 14:41:51

标签: php laravel-5 email-integration

我目前正在我的服务器端使用cPanel,我已经尝试了所有在线教程,展示了如何将所有电子邮件传输到Laravel项目,我确实找到了一个适用于Laravel 4的教程但不幸的是它没有在Laravel 5.0上为我工作:

http://www.sitepoint.com/piping-emails-laravel-application/

我已经将我的cPanel“默认地址”设置为php处理程序文件,但由于我正在使用Laravel,我无法使用此文件来处理应用程序类并为我的客户执行操作(例如发送通知) ,保存数据库中的电子邮件信息等...) 如果有一个很好的清洁方法可以让我知道。

顺便说一句,我需要这个域名上的所有电子邮件才能转到我的php处理程序,而不是仅从一个地址,因为我的每个客户都有自己的电子邮件地址

1 个答案:

答案 0 :(得分:6)

我最终在mandrill上创建了一个免费帐户,他们将我所有传入的电子邮件发布到我的一条路线上...而且,我创建了一个控制器来处理来自mandrill的传入电子邮件,我可以做任何我需要的那里...这是最好的方式...我在不到2秒的时间内收到并处理电子邮件。太棒了。

我已将mandrill MX记录添加到我的子域中,现在我向所有客户提供了一个包含此子域名的电子邮件地址“username@inbox.mydomain.com”

这是我的路线:

Route::post('inbound/message', 'MailController@inboundMessages');

这是我的控制器示例:

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Carbon\Carbon;

class MailController extends Controller
{

    /**
     * main function to receive incoming email from mandrill POST request
     * @param  JSON $request Mandrill Object in JSON format
     * @return string
     */
    public function inboundMessages(Request $request){
        if(isset($request['mandrill_events'])){

           $messageJson = json_decode($request['mandrill_events']);
           $message = $messageJson[0]->msg;
           $email = [
             "to" => $message->email,
             "from" => $message->from_email,
             "name" => isset($message->from_name) ? $message->from_name : "No Name",
             "subject" => isset($message->subject) ? $message->subject : "No Subject",
             "content" => isset($message->text) ? $message->text : "",
             "content_html" => isset($message->html) ? $message->html : ""
          ];

          //do whatever you want with your $email

        }
    }

}

希望它有所帮助:)祝你好运