2016-04-24 8 views
1

私はLaravelを使用して電子メールとプレーンテキストを正常に送信しています。ただし、メールに画像を添付する際に問題が発生しています。現時点では、イメージはBase64ストリングとしてDBに格納されています。Laravelを使用してBase64イメージを送信

これはLaravelでのメールのファサードを呼び出すコードです:

  Mail::queue('emails.infraction', $data, function($message) use ($email){ 
      $message -> from($fromEmail, 'Blah); 
      $message -> to($toEmail) -> subject('Testing'); 

     }); 

基本的には$データ変数は、私が送信されているHTML形式の電子メールに表示されるすべての情報が含まれています。電子メールに変数を表示するときに変数にアクセスできますが、base64イメージを電子メールに添付する際に問題があります。

これは私がこれまでにしようとしているものです:

 Evidence of Intraction:</p> 
      <?php 
       $elementCount = count($photos); 
       for($x=0; $x<$elementCount; $x++){ 
        echo '<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; margin-left: 80px;">'; 
        echo "<img src=" . $message->embedData($data['photos'][$x], 'Blah') . ">"; 
        echo "</p>"; 
       } 
      ?> 

をしかし、あなたがここに見ることができるように、Gmailが適切に画像にrawDataStringことをコードしない:

laravel

それだけで表示されますあたかも写真があっても内容はないかのように。私はベース64の文字列を確認して、それは正しいです。

何が原因の可能性がありますか?

laravel mailer

が、私はきちんとそれを行う方法にはほとんど失われています:

Laravelメールドキュメントは、メッセージビルダーでこのようなものを使用することを言います。もう一つのオプションは、その場でbase64文字列を画像に変換し、それをユーザーに添付して送信することですが、サーバーに画像を保存することができず、PHP内の画像に変換して送信する必要があります実際のファイルパスのないlaravelメーラー。

あなたが最初にこのように画像をデコードする必要が

+0

は、このように私には見えるあなたはおそらく 'を'たくながら '' になります - それが理由かもしれません? –

+0

@JoelHinz私はそれを試みたが、まだGmailに問題がある。 base64文字列 –

答えて

3

を教えてください:

$message->embedData(base64_decode($data['photos'][$x]), 'Blah') 
+0

で完全なimgソースタグを表示するだけで問題になりました。私はbase64文字列をデコードしていませんでした。私は今インラインの代わりに添付ファイルとして画像を含めました。 –

関連する問題