Не удается отправить почту после создания новой учетной записи пользователя в laravel - PullRequest
0 голосов
/ 13 апреля 2019

я новичок в laravel, пытаюсь отправить письмо пользователям, если они успешно зарегистрировались, и в электронном письме оно будет содержать некоторые детали

В моем приложении создавалась новая учетная запись или новые пользователи, но электронное письмо не отправлялось, эта ошибка отображалась на вкладке сети

message:    htmlspecialchars() expects parameter 1 to be string, object given (View: C:\xampp\htdocs\laravel Projects\bank\iscbank\resources\views\emails\welcome.blade.php)
exception:  ErrorException
file    C:\xampp\htdocs\laravel Projects\bank\iscbank\vendor\laravel\framework\src\Illuminate\Support\helpers.php

вот мой код или отправка электронного письма

$datty = array(
            'name' => $request->input('name'), 
            'email' => $request->input('email'), 
            'Authenticationkey' => $this->genAutKey, 
            'password' => $this->genPass,
            'AccountNumber' => $this->AccNum,
        );

Mail::send('emails.welcome', $datty, function ($message){
                $message->from(Auth::user()->email, Auth::user()->name);    
                $message->to(Input::get('email'))->subject(Input::get('subject'));
            });

вот код welcome.blade.php

<?php
    if (!function_exists('url')){
        function url(){
            if(isset($_SERVER['HTTPS'])){
                $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
            }
            else{
                $protocol = 'http';
            }
            return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        }
    }
?>
<div style="background-color: #eeeeef; padding: 50px 0; ">     
    <div style="max-width:640px; margin:0 auto; ">        
        <div style="color: #fff; text-align: center; background-color:#33333e; padding: 30px; border-top-left-radius: 3px; border-top-right-radius: 3px; margin: 0;">            
            <h1>Your account details</h1>        
        </div>        
        <div style="padding: 20px; background-color: rgb(255, 255, 255);">            
            <p style="color: rgb(85, 85, 85); font-size: 14px;"> 
                Hello {{$datty['name']}},<br>
                <br>An account has been created successfully.
            </p>            
            <p style="color: rgb(85, 85, 85); font-size: 14px;"> 
                Please use the following info to login your account:
            </p>            
            <hr>            
            <p style="color: rgb(85, 85, 85); font-size: 14px;">Dashboard URL:&nbsp;
                <a href="{{url()}}" target="_blank">{{url()}}</a>
            </p>            
            <p style="color: rgb(85, 85, 85); font-size: 14px;"></p>            
            <p >
                <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                    Email: {{$datty['$email']}}
                </span><br>
            </p>            
            <p>
                <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                    Password:&nbsp;{{$datty['password']}}
                </span>
            </p>          
            <p>
                <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                    Activation Key:&nbsp;{{$datty['Authenticationkey']}}
                </span>
            </p>            
            <p style="color: rgb(85, 85, 85);"><br></p>            
            <p style="color: rgb(85, 85, 85); font-size: 14px;">Thanks</p>        
        </div>    
    </div>
</div>

и вот код или WelcomeMail.php

<?php

namespace App\Mail;

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

class WelcomeMail extends Mailable{
    use Queueable, SerializesModels;
    public $user;

    public function __construct($user){
        $this->user = $user;
    }

    public function build(){
        return $this->view('emails.welcome');
    }
}

Пожалуйста, как я могу решить эту проблему, я попытался поиск в Интернете, но все они говорят то же самое, пожалуйста,

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

передать массив $ datty, используя функцию mail *

Mail::send('emails.welcome', $datty, function ($message) use($datty){
        $message->from(Auth::user()->email, Auth::user()->name);    
        $message->to(Input::get('email'))->subject(Input::get('subject'));
    });

Обновите файл welcome.blade.php с помощью приведенного ниже кода.Используйте только индексы массива

<?php
   if (!function_exists('url')){
    function url(){
        if(isset($_SERVER['HTTPS'])){
            $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
        }
        else{
            $protocol = 'http';
        }
        return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    }
}

<div style="background-color: #eeeeef; padding: 50px 0; ">     
<div style="max-width:640px; margin:0 auto; ">        
    <div style="color: #fff; text-align: center; background-color:#33333e; padding: 30px; border-top-left-radius: 3px; border-top-right-radius: 3px; margin: 0;">            
        <h1>Your account details</h1>        
    </div>        
    <div style="padding: 20px; background-color: rgb(255, 255, 255);">            
        <p style="color: rgb(85, 85, 85); font-size: 14px;"> 
            Hello {{ $name ]}},<br>
            <br>An account has been created successfully.
        </p>            
        <p style="color: rgb(85, 85, 85); font-size: 14px;"> 
            Please use the following info to login your account:
        </p>            
        <hr>            
        <p style="color: rgb(85, 85, 85); font-size: 14px;">Dashboard URL:&nbsp;
            <a href="{{url()}}" target="_blank">{{url()}}</a>
        </p>            
        <p style="color: rgb(85, 85, 85); font-size: 14px;"></p>            
        <p >
            <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                Email: {{ $email }}
            </span><br>
        </p>            
        <p>
            <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                Password:&nbsp;{{ $password }}
            </span>
        </p>          
        <p>
            <span style="color: rgb(85, 85, 85); font-size: 14px; line-height: 20px;">
                Activation Key:&nbsp;{{$Authenticationkey}}
            </span>
        </p>            
        <p style="color: rgb(85, 85, 85);"><br></p>            
        <p style="color: rgb(85, 85, 85); font-size: 14px;">Thanks</p>        
    </div>    
</div>

0 голосов
/ 13 апреля 2019

Вы передаете $datty по почте, но не используете его, вам нужно использовать $datty. Обновите свой код с помощью этого.

Mail::send('emails.welcome', ['datty'=>$datty], function ($message) use($datty){
            $message->from(Auth::user()->email, Auth::user()->name);    
            $message->to(Input::get('email'))->subject(Input::get('subject'));
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...