Laravel 如何通过';客户地址';到我的新邮件实例?
我正在创建一个动态发送器,我将此代码放入服务类**(AppServiceProvider.php)**或返回准备使用的Mailer对象的函数中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 =
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.