Laravel 如何通过';客户地址';到我的新邮件实例?

Laravel 如何通过';客户地址';到我的新邮件实例?,laravel,laravel-5,swiftmailer,mailgun,Laravel,Laravel 5,Swiftmailer,Mailgun,我正在创建一个动态发送器,我将此代码放入服务类**(AppServiceProvider.php)**或返回准备使用的Mailer对象的函数中 public function register() { $this->app->bind('user.id', function ($app, $parameters) { $smtp_host = array_get($parameters, 'smtp_host'); $smtp_port =

我正在创建一个动态发送器,我将此代码放入服务类**(AppServiceProvider.php)**或返回准备使用的Mailer对象的函数中

 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;
    });
}
这是我的控制器,在这里我将参数传递给新实例“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'  => 'email@gmail.com',
        'smtp_password'  => 'password',
        'smtp_encryption'  => 'ssl',
       
        'from_email'    => 'email@gmail.com',
        'from_name'    => 'name',
       ];
       
    $mailer = app()->makeWith('user.id', $configuration);
    
    $mailer->to($customer_email)->send(new DocumentEmail($company, $document));

        return [
        'success' => true
    ];
}
我得到这个错误:


发送电子邮件并不一定要复杂。Laravel提供了一个干净、简单的电子邮件API,由流行的SwiftMailer库提供支持。Laravel并提供通过SMTP、Mailgun、邮戳、Amazon SES和sendmail发送电子邮件的驱动程序,允许您快速开始通过您选择的本地或基于云的服务发送邮件

Laravel的电子邮件服务可以通过应用程序的
config/mail.php
配置文件进行配置因此我建议您将此代码移动到配置中的正确部分。在此文件中配置的每个邮件程序可能都有自己独特的配置,甚至有自己独特的“传输”,允许您的应用程序使用不同的电子邮件服务发送特定的电子邮件。例如,您的应用程序可能使用邮戳发送事务性电子邮件,而使用AmazonSES发送批量电子邮件

邮件
配置文件中,您将找到一个
邮件
配置数组。此数组包含Laravel支持的每个主要邮件驱动程序/传输的示例配置条目,而默认配置值确定当应用程序需要发送电子邮件时,
default
将使用哪个邮件程序

我强烈建议你遵守规则。这样,您将避免许多类似这样的问题,并且您的代码将比现在干净得多


关于Laravel返回的错误,可能是
$customer\u email
变量为空或不是有效的电子邮件。

感谢您的回答,目前我正在使用官方文档中的“config/mail.php”,但我有一个要求,即所有邮件发送都是动态的,每个用户上传其主机、端口等配置。我已经使用了multytenant,基于此上下文,您有什么建议吗?您是否提供smtp服务或类似的服务?为什么允许每个用户上传自己的设置?
"Swift_RfcComplianceException" exception. line: 355 message: "The given mailbox address [] does not comply with RFC 2822, 3.6.2.