laravel 5.4 Bild einbetten in E-mail
Habe ich gerade aktualisiert meine 5.2
Installation von laravel zu 5.3
und dann zu 5.4
im Anschluss an den offiziellen Upgrade-Methoden.
Ich versuche jetzt zu verwenden Sie eine der neuen Funktionen, zum erstellen eines markdown-formatierte E-Mail.
Gemäß der Dokumentation ausgeführt haben, finden Sie unter: https://laravel.com/docs/5.4/mail#view-data
Einbetten eines inline-Bildes, verwenden Sie die embed-Methode auf die
$message
variable, die in Ihre E-Mail-Vorlage. Laravel automatisch macht
$message
variable zur Verfügung, um alle Ihre E-Mail-Vorlagen, so dass Sie
nicht sich sorgen machen müssen Sie es manuell:
Jedoch diese:
<img src="{{ $message->embed(public_path().'/img/official_logo.png') }}">
wird den folgenden Fehler erzeugen:
Undefined variable:
message
Bin ich etwas fehlt? Oder gibt es etwas, ohne Papiere in die Modernisierung guides?
Später Bearbeiten:
Rufe ich die E-Mail-Funktion mit:
\Mail::to($user)->send(new WelcomeCandidate($user, $request->input('password')));
Und WelcomeCandidate aussieht:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Models\User;
class WelcomeCandidate extends Mailable
{
use Queueable, SerializesModels;
public $user;
public $password;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(User $user, $password)
{
//
$this->user = $user;
$this->password = $password;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->subject('Welcome!');
return $this->markdown('emails.welcome-candidate');
}
}
- zeigen Sie etwas mehr code, aber was der Fehler sagt, ist ziemlich klar. Sie wusste nicht, definieren Sie die variable message auf Ihrem paketversandfähige Klasse oder notification-Klasse oder die Sie nicht zuordnen und es in den Konstruktor von Ihrer paketversandfähige / Benachrichtigung. Auch wenn Sie gonna verwenden, markdown, brauchen Sie nicht das Bild-tag.
- Ich habe es gemäß der Anleitung, wie man sehen kann in dem zitierten text. Welchen code soll ich eingeben?
- den code, wo Sie exectute Ihre paketversandfähige Klasse: so zum Beispiel :
$message = "hello"; Mail::to($request->user())->send(new OrderShipped($message));
- Ich habe den code in die Frage.
- Gleiche Frage wurde hier angehoben: github.com/laravel/framework/issues/17629 . Keine Lösungen aber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass der ältere $Nachricht->embed funktioniert nicht gut mit Markdown-E-Mails. Wie Sie erwähnt in den Kommentaren, es scheint, gebrochen seit 5.4
Aber Sie konnte nur versuchen, es so in Ihrem markdown E-Mail:
Wie hier gezeigt:
https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#images
Asset-Funktion Referenz: https://laravel.com/docs/5.4/helpers#method-asset
<img alt="alt here" title="title here" style="font-family:Avenir,Helvetica,sans-serif;box-sizing:border-box;max-width:100%">
<td class="logo"><img src="{{asset('img/official-logo.png')}}" alt="alt here"></td>
imvews/vendor/mail/html/layout.blade.php
wie lege ich das logo in allen E-Mails als Standard.Versuchen Sie dies:
oder
<img src="data:...r4ScdV3si deY8TdZ...">
Können Sie auch dieses nützliche Paket
https://github.com/eduardokum/laravel-mail-auto-embed
Seine Verwendung ist sehr einfach, schreiben Sie Ihre markdown-Regel:
Beim senden wird, ersetzt die Verknüpfung, die normalerweise erzeugt werden:
durch eine integrierte inline-Anlage des Bildes:
Mein Problem gelöst!
Wenn Sie localhost verwenden , können Sie public_path statt base_path Funktion
Können Sie Folgendes versuchen: