标签: laravel-mail

Laravel 5 Mail模板显示html标签

我有主要的邮件模板(resources / views / mail.blade.php)。这是一个通用模板,可以使用我的所有邮件,例如忘记密码或更改新密码。mail.blade.php的内容如下:

<table>
<tr><td>SiteName</td>
</tr>
<tr><td>{{$content}}</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我通过CKEditor存储电子邮件模板的内容(在mySql数据库中),它看起来像:

<p>Dear {{$username}},</p>
<p>This is your new password: {{$newPassword}}</p>
Run Code Online (Sandbox Code Playgroud)

现在我在laravel 5.5中使用邮件功能,如下所示:

$content = str_replace(array('username', 'newPassword'), array($userName, $request->confirm_password), addslashes($emailTemplate->templateBody));

Mail::send(['html' => 'mail'], ['content' => $content], function ($message) use($emailTemplate, $user){
$message->from($emailTemplate->fromEmail, $emailTemplate->fromName);
$message->to($user->email);
});
Run Code Online (Sandbox Code Playgroud)

在mailtrap.io中发送电子邮件后,我看到邮件看起来像:

$content = str_replace(array('username', 'newPassword'), array($userName, $request->confirm_password), addslashes($emailTemplate->templateBody));

Mail::send(['html' => 'mail'], ['content' => $content], function ($message) use($emailTemplate, $user){
$message->from($emailTemplate->fromEmail, $emailTemplate->fromName);
$message->to($user->email);
});
Run Code Online (Sandbox Code Playgroud)

请注意,mail.blade中写有SiteName的表格tr,td正常工作,电子邮件中没有显示HTML代码。没关系。但是,只有来自CKEditor的内容才带有HTML标记(<p></p>)。

我做错什么了吗?

laravel laravel-5 laravel-mail

5
推荐指数
1
解决办法
1272
查看次数

如何将数据从Laravel Controller发送到Mailable Class

我在Laravel 5.3中创建了Mailable Class,它调用了视图.但是,我需要将一些变量从我的Controller传递给Mailable类,然后在View中使用这些值.这是我的设置:

控制器:

$mailData = array(
                   'userId'     => $result['user_id'],
                   'action'     => $result['user_action'],
                   'object'     => $result['user_object'],
                  );
Mail::send(new Notification($mailData));
Run Code Online (Sandbox Code Playgroud)

可邮寄:

class Notification extends Mailable
{
    use Queueable, SerializesModels;

    protected $mailData;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        // Array for Blade
        $input = array(
                          'action'     => $mailData['action'],
                          'object'     => $mailData['object'],
                      );

        return $this->view('emails.notification') …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-mail laravel-5.3

4
推荐指数
1
解决办法
4368
查看次数

Laravel 使用 queue() 发送邮件在服务器上不起作用

我尝试使用 Laravel 队列作业和 Hostmonster Web 服务器上的网站发送邮件,但当我触发时它不会发送邮件php artisan queue:work,它会清除作业表,但不会清除收到到我的电子邮件地址的邮件。

这是我的排队和发送邮件功能的代码:

    //It is working
    $to = '****@g***l.com';
    \Mail::to($to)->send(new ContactUsMail($contactUsId));

    //It is not working: on same host email working not work with hotmail - gmail - other
    $to = '****@g***l.com';
    \Mail::to($to)->queue(new ContactUsMail($contactUsId));
Run Code Online (Sandbox Code Playgroud)

邮件发送工作正常,有两种情况:

  1. 如果我使用send()方法发送邮件(绕过/忽略队列)
  2. 也使用queue()发送到同一托管电子邮件(如info@myhost.com

但现在如果我使用xyz@yahoo.com/xyz@gmail.com那么在这种情况下队列不起作用 - 作业表也会删除发送邮件时的条目,但宾果..!! 邮件发到哪里我不知道。

另外 cron mail 与队列简单mail()功能相同的问题在那里工作但Mail::send()在那里不起作用..!

php email laravel laravel-mail

4
推荐指数
1
解决办法
8684
查看次数

Laravel htmlspecialchars() 发送电子邮件时出错

我正在尝试通过 Laravel 中的 Sendgrid 发送电子邮件。我一直在关注Sendgrid 的关于使用 Laravel 发送电子邮件的知识库文章

我已经在我的文件中设置了所有内容.env(尽管我还必须更新MAIL_HOSTin ~/config/mail.php),并且我能够发送测试电子邮件(我正在刀片内执行此操作)。

电子邮件模板本身的刀片与 SendGrid 的文档完全相同:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h2>Test Email</h2>
        <p>{{$message}}</p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在单独的刀片中运行的代码(我只是为了测试而这样做)是:

@php

use App\Mail\TestEmail;

$data = ['message' => 'Oh, hai!'];

Mail::to('john@doe.com')->send(new TestEmail($data));

@endphp
Run Code Online (Sandbox Code Playgroud)

通过上述我得到以下错误:

htmlspecialchars() expects parameter 1 to be string, object given 
    (View: ~/resources/views/emails/test.blade.php)
Run Code Online (Sandbox Code Playgroud)

当我不使用{{ message }}刀片时,一切都很好。

有人可以让我知道发生了什么事以及如何解决它吗?这是我第一次使用 Laravel,任何能为我指明正确方向的事情都可以。

htmlspecialchars laravel laravel-blade laravel-mail

3
推荐指数
1
解决办法
1684
查看次数

有没有办法将 Laravel Mail 对象的主体存储在变量中?

我正在使用 Laravel Mail API 生成邮件并将其发送出去。
一切都很好。

但是,我还想将电子邮件正文记录在数据库中。
不过,为了做到这一点,我需要首先获取我要发送的电子邮件的正文。

在 Laravel 文档中,他们有一个关于如何将电子邮件输出到浏览器的代码片段:
https ://laravel.com/docs/5.7/mail#previewing-mailables-in-the-browser

但是,我不想将电子邮件输出到浏览器。我想将它存储在一个变量中。
那可能吗?如果是这样,怎么办?谢谢。

就像文档建议的那样,我尝试了类似以下的操作:

$body = new App\Mail\InvoicePaid($invoice);
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条错误消息,说我必须实际返回新的 Mail 对象才能使其正常工作(即执行文档中示例代码中的操作)。

php laravel laravel-mail

3
推荐指数
1
解决办法
2662
查看次数

Laravel使用我的旧电子邮件配置发送邮件

我已经在.env文件中更改了电子邮件配置,但是当我尝试发送邮件时,它使用的是旧配置。

我已经尝试了一些命令:

php artisan clear-compiledphp artisan cache:clearphp artisan config:clear但它仍然在使用我的旧电子邮件发送。

我还尝试更改了旧Gmail帐户的密码,但是我的网站只是使用旧邮件帐户发送邮件。

我注意到了这一点:

This message may not have been sent by: [redacted]@gmail.com Learn more Report phishing

在收到的邮件上。

php email laravel-5 laravel-mail laravel-notification

2
推荐指数
1
解决办法
1721
查看次数

Laravel - 如何在邮件称呼中添加换行符?

我不想创建一个新的降价文件,只想在“没有段落”的称呼中包含一个换行符。

我测试了一切:

->salutation("Atenciosamente,\n\n{$app}")
->salutation("{!! 'Atenciosamente,<br>' !!}{$app}")
->salutation(nl2br(e('Atenciosamente, <br>')). "{$app}")
...
Run Code Online (Sandbox Code Playgroud)

最简单的解决方案:

要在没有段落的情况下换行,您需要使用两个尾随空格和一个输入。

在此处输入图片说明

laravel laravel-mail

2
推荐指数
2
解决办法
2828
查看次数

Laravel邮件错误:无法启动进程[系统找不到指定的路径。]

我正在开发一个新的Laravel应用程序。当我使用邮件通过网站上的联系表发送消息时,出现以下错误:

无法启动进程[系统找不到指定的路径。]

我在本地环境中进行开发,但是使用我的公司邮件来获取消息。

我的控制器:

namespace App\Http\Controllers;

use App\SendMessage;
use App\Mail\SendEmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Controller;
use Session;

class SendMessageController extends Controller
{
    public function store(Request $request) {
        $this->validate($request, [
            "email" => "required|email",
            "message" => "min:10",
            "subject" => "min:3"
        ]);


        $name = $request->name;
        $email = $request->email;
        $company = $request->company;
        $subject = $request->subject;
        $message = $request->message;

        Mail::to("audit@auditors.uz")->send(new SendEmail($subject, $message));

        Session::flash("success", "Your email was sent");

        return back();
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

我的邮寄功能:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue; …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-mail

2
推荐指数
1
解决办法
5512
查看次数

如何在 Laravel 应用程序中添加回复?

我从以下代码开始:

Mail::to('mail@gmail.com')->send(new ContactFormMail($email_data));
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我不确定如何向此代码添加“回复”。
接下来我尝试的是:

Mail::send('emails.contact-form', $email_data, function ($message) {
  $message->from('admin@laravel.com', 'Laravel');
  $message->to('admin@laravel.com');
  $message->replyTo('admin@laravel.com', 'Laravel');
});
Run Code Online (Sandbox Code Playgroud)

这有以下问题:

没有为 [mail] 定义提示路径...

在这种情况下,如果我从邮件视图中删除@component('mail::message'),消息将按其应有的方式发送,但没有样式。
最后,我的 Mailable 类中有这段代码:

public function build()
{
  return $this->markdown('emails.contact-form');
}
Run Code Online (Sandbox Code Playgroud)

任何援助将不胜感激。
谢谢

laravel laravel-mail laravel-6

2
推荐指数
1
解决办法
1322
查看次数

Laravel Mail 消息组件前缀

我正在尝试为 Laravel 自定义我的电子邮件模板。所以我发布了通知和邮件供应商。

resources/views/vendor/notifications/email.blade.php文件中框架调用这样的组件

@component('mail::button')
Run Code Online (Sandbox Code Playgroud)

前缀代表什么mail::

我尝试在 下编写自己的组件locatete resources/views/vendor/mail/mycomponent.blade.php。所以我也将其称为默认组件。

@component('mail::mycomponent')
Run Code Online (Sandbox Code Playgroud)

这是行不通的。这里的错误:

View [mycomponent] not found. (View: /resources/views/vendor/notifications/email.blade.php)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是前缀mail::点在哪里?我可以将它用于我自己的组件吗?

php laravel laravel-blade laravel-mail

1
推荐指数
1
解决办法
6642
查看次数

Laravel:是否可以延迟发送通知,但动态更改 smtp 设置?

我正在使用 Laravel v5.7 开发多租户(多个数据库),并且我成功发送了队列电子邮件。

在某些特定情况下,我想发送带有“延迟”的按需通知,类似于指南按需通知,但通知发送前应使用的 SMTP 设置。

我开发了一个可以更改 config() 值的类。

应用程序/租户/SmtpConfig.php

class SmtpConfig
{
    public static function setConnection(SmtpConta $conta = null)
    {
        // get connection default settings
        $config = config()->get("mail");

        // populate connection default settings
        foreach ($config as $key => $value) {
            if ( $key == 'host' )      { $config[$key] = $conta->mail_host ?? $config[$key]; }
            if ( $key == 'from' )      { $config[$key] = [
                'address' => ( $conta->mail_host === 'smtp.mailtrap.io' ) ? $config[$key]['address'] : $conta->mail_username,
                'name' => …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-mail laravel-notification

1
推荐指数
1
解决办法
1931
查看次数

Fortify - 如何自定义验证/密码重置电子邮件?

我正在将强化实施到我的应用程序中。当您点击密码重置/验证电子邮件路由时,我真的对自定义生成的默认电子邮件感到困惑?

我可以在供应商中编辑它们,但是每次更新都会给我带来问题。

必须有一个钩子来提供替代电子邮件模板。

不幸的是,我找不到任何解释它是如何完成的文档。

我是否需要添加:

public function sendEmailVerificationNotification()
{


}
Run Code Online (Sandbox Code Playgroud)

到我的用户模型?如果是这样,我如何生成返回验证 URL,因为它没有保存在数据库中?

任何帮助都会很棒。

谢谢!

laravel laravel-mail laravel-8 laravel-fortify

1
推荐指数
2
解决办法
1259
查看次数

已发送邮件检查是否已送达并在 Laravel 中向收件人开放

我想在帮助脚手架代码Laravel默认的邮件包发送电子邮件到收件人与检查状态或者邮件的增强交付给收件人,然后检查,要么收件人打开邮件或没有,然后更改该电子邮件的状态在我的db_email_list 中。我用谷歌搜索它来添加标题,就像按照示例一样,但无法获取如何获取状态

$message->getHeaders()->addTextHeader('X-Confirm-Reading-To','recipient_mail');

$sendEmail->getHeaders()->addTextHeader('Disposition-Notification-To','recipient_mail');

$sendEmail->getHeaders()->addTextHeader('Return-Receipt-To','recipient_mail');
Run Code Online (Sandbox Code Playgroud)

phpmailer swiftmailer laravel email-delivery laravel-mail

0
推荐指数
1
解决办法
1768
查看次数