2017-03-08 90 views
1

我最近升级到laravel 5.4,并且已经能够成功地构建并发送一个降价邮寄邮件到我的mailtrap.io和我的个人电子邮件没有问题,它的工作很棒!我的问题是我使用第三方电子邮件服务,需要单独的字符串变量中的文本和HTML视图。我知道我可以建立单独的模板来完成此操作,但我想使用降价邮件的便利性和效率。我有一个MailController.php,我验证,并建立必要的信息来发送这个请求:laravel 5.4 markdown html和文本视图

Mail::to('[email protected]')->send(new RequestShowing($jrequest)); 

这贯穿我可邮寄类RequestShowing如下所示:

namespace App\Mail; 

use Illuminate\Bus\Queueable; 
use Illuminate\Mail\Mailable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class RequestShowing extends Mailable 
{ 
    use Queueable, SerializesModels; 

    public $request; 

    /** 
    * Create a new message instance. 
    * 
    * @return void 
    */ 
    public function __construct($request) 
    { 
     $this->request = $request; 
    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() 
    { 
     return $this->from('[email protected]') 
        ->to('[email protected]') 
        ->replyTo('[email protected]') 
        ->subject('Contact from '.$this->request->name) 
        ->markdown('emails.request-showing'); 
    } 
} 

这一切工作正常与mailtrap.io和测试,但为了获取文本和HTML视图我运行我的MailController.php以下

$inquiry = new RequestShowing($jrequest); 

dd($jrequest, $jrequest->email, $inquiry); 

我得到没有对象的“查看”或本输出“的TextView “

RequestShowing {#637 ▼ 
    +request: {#665 ▼ 
    +"name": "Sally Johnson" 
    +"email": "[email protected]" 
    +"phone": "406-333-5555" 
    +"comment": "This is a test email" 
    +"renturl": "http://localhost:8000/for-rent/apartment/3409-1st-ave-n-billings-mt-59101/178" 
    } 
    +from: [] 
    +to: [] 
    +cc: [] 
    +bcc: [] 
    +replyTo: [] 
    +subject: null 
    #markdown: null 
    +view: null  <== need html view 
    +textView: null <== need text view 
    +viewData: [] 
    +attachments: [] 
    +rawAttachments: [] 
    +callbacks: [] 
    +connection: null 
    +queue: null 
    +delay: null 
} 

这就是我卡住的地方。我浏览过论坛和文档,没有回答如何为我的第三方电子邮件提供商获取这两个视图。

为可邮寄输出的文档是在这里: https://laravel.com/api/master/Illuminate/Mail/Mailable.html

我不明白为什么$ jrequest被保留,并且不显示其他对象,除非它们的使用和立即处理。任何见解或帮助表示赞赏。谢谢!

回答

1

像往常一样,熟悉的文件下配置,我发现我的答案在纯文本电子邮件部分视图可帮助使邮件页面上:

https://laravel.com/docs/master/mail#configuring-the-view

的观点一样,法,文方法接受一个将用于呈现电子邮件内容的模板名称。你可以自由定义既是HTML和您的邮件的纯文本版本:

/** 
* Build the message. 
* 
* @return $this 
*/ 
public function build() 
{ 
    return $this->view('emails.orders.shipped') 
       ->text('emails.orders.shipped_plain'); 
} 

所以出现降价这两种观点结合在一起,在降价格式和非降价方法需要建立每两个模板电子邮件。

一个方面的评论是,我检查Mailtrap.io的分析选项卡的降价电子邮件和垃圾邮件分数为0.0 - 我的简单小html模板测试的垃圾邮件分数是1.8这不是一个简单的东西不好。

我想我会寻找另一种传递方法,因为这个分数太好了,不能传递!建立Markdown方法的人员已经完成了避免垃圾邮件评级的所有繁琐工作,我完全赞同这一点!

+0

还有一件事要做这个转变。多年来,我使用了HTTP API,它需要文本和html两种视图中的任何一种。我查看了其他大量电子邮件发件人,他们也这样做。现在Markdown已经将这一切捆绑在一起,该解决方案不起作用。我看着我的设置,他们还提供了一个SMTP API,这是非常标准的邮件设置,没有发送功能来安装。 Laravel通过包含在.env文件中的SMTP邮件变量轻松接受这些设置。欢迎在Laravel 5.4中加入Markdown! –

+0

顺便说一句,我一直在使用弹性电子邮件,并喜欢他们的服务。非常适合希望发展的小公司。 –