lundi 1 mars 2021

How can I pass the 'customer client' in my new Mailer instance?

I am making a dynamic sender, I put this code in a Service class(AppServiceProvider.php) or in a function that returns the Mailer object ready to be used.

AppServiceProvider.php

    public function register()
{
    $this->app->bind('user.id', function ($app, $parameters) {
        $smtp_host = array_get($parameters, 'smtp_host');
        $smtp_port = array_get($parameters, 'smtp_port');
        $smtp_username = array_get($parameters, 'smtp_username');
        $smtp_password = array_get($parameters, 'smtp_password');
        $smtp_encryption = array_get($parameters, 'smtp_encryption');
      
        $from_email = array_get($parameters, 'from_email');
        $from_name = array_get($parameters, 'from_name');
      
        $from_email = $parameters['from_email'];
        $from_name = $parameters['from_name'];
      
        $transport = new \Swift_SmtpTransport($smtp_host, $smtp_port);
        $transport->setUsername($smtp_username);
        $transport->setPassword($smtp_password);
        $transport->setEncryption($smtp_encryption);
      
        $swift_mailer = new \Swift_Mailer($transport);
      
        //$mailer = new Mail;
        $mailer = new Mailer($app->get('view'), $swift_mailer, $app->get('events'));
        $mailer->alwaysFrom($from_email, $from_name);
        $mailer->alwaysReplyTo($from_email, $from_name);
      
        return $mailer;
    });
}

this is my controller where I pass the arguments to the new instance 'mailer'.

  public function email(DocumentEmailRequest $request)
{
    $user = Company::active();
    $company = Company::active();
    $document = Document::find($request->input('id'));
    $customer_email = $request->input('customer_email');

    $configuration = [
        'smtp_host'    => 'smtp.gmail.com',
        'smtp_port'    => '465',
        'smtp_username'  => 'izafact@gmail.com',
        'smtp_password'  => '012120331kJ&',
        'smtp_encryption'  => 'ssl',
       
        'from_email'    => 'izafact@gmail.com',
        'from_name'    => 'izafact',
       ];
       
    $mailer = app()->makeWith('user.id', $configuration);
    
    $mailer->to($customer_email)->send(new DocumentEmail($company, $document));

        return [
        'success' => true
    ];
}

I get this error:

    "Swift_RfcComplianceException" exception.
line: 355
message: "The given mailbox address [] does not comply with RFC 2822, 3.6.2.


via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire