1、laravel新增发件人配置:
在需要发送邮件的地方,加上以下配置
//修改邮箱配置 \Config::set('mail.from', ['address' => $data['email'], 'name' => $data['user_name']]); \Config::set('mail.username', $data['email']); \Config::set('mail.password', $data['password']); //发送邮件 Mail::send('mailtemp.taskmail', $data, function($m) use($data){ //from-发件人;to-收件人,cc-抄送人;attach-附件 $m->to('ganyongmeng@qq.com') ->subject($data['title']); $m->attach('http://附件链接’); });
注:在设置Config的时候,需要注意,在同一个进程里,设置了config,是会影响全局config配置,但是新建一个队列进程,更改配置,不会影响原有config配置,因为已经属于不同的进程,故如果需要更改config配置,必须新起一个进程,再在这个新的进程里设置config,这样就能保证config互不影响,如下例子可以说明。
//默认配置mail.username = a echo "step1:".\Config::get('mail.username'); \Config::set('mail.username', "b"); echo "step2:".\Config::get('mail.username'); $job = (new \App\Jobs\Test1())->onQueue('abc');//新进程,在这个进程里面,会设置新的mail值,且在这个进程里面生效 dispatch($job); echo "step3:".\Config::get('mail.username'); //输出:step1:a,step2:b,step3:b;
启动队列进程:
php artisan queue:work --queue=abc --tries=1
\App\Jobs\Test1 job:
public function handle() { \Config::set('mail.username', "c"); $res = \Config::get('mail.username'); info('mail_username:'.$res); info('exec job...'); } //输出:c
2、对于发送到QQ邮件乱码问题:
使用laravel内置邮箱发送到QQ邮箱的时候,如果附件文件名小于6个中文字,会导致乱码,解决方案:
(1)、
preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$file_arr['basename'],$arrCh); if(count($arrCh[0]) < 6 ){ $m->attach($data['file1'],['as' => "=?UTF-8?B?". base64_encode($file_arr['basename']) . "?="]); //$file_arr['basename']为文件名及后缀 }else{ $m->attach($data['file1']); }
(2)、
$file = \Swift_Attachment::fromPath('http://test.cn/20181211111206/中文名.xlsx'); $file->setDisposition("attachment; filename* = " . "中文名.xlsx"); $m->getSwiftMessage()->attach($file);
转载请注明:永盟博客 » laravel内置邮件发送问题汇总