2015-12-08 59 views
0

我的代码是这样的:无法发送邮件到电子邮件发件人动态在laravel 5

public function sendMail(array $data) 
    { 
     $data = explode('#', $data['id']); 
     $email_from = Auth::user()->email; 
     $email_to = $data[4]; 
     $subject = 'Send Email Test'; 

     $data_user = ['user_name' => $data[1], 'full_name' => $data[2].' '.$data[3] ]; 

     $sent = Mail::send('backend.auth.success_approved', $data_user, function ($mail) use ($email_to, $email_from, $subject) 
       { 
        $mail->from($email_from) 
         ->to($email_to) 
         ->subject($subject); 
       }); 
    } 

我的配置在mail.php:

return [ 
    'driver' => env('MAIL_DRIVER', 'smtp'), 
    'host' => env('MAIL_HOST', 'smtp.gmail.com'), 
    'port' => env('MAIL_PORT', 587), 
    'from' => ['address' => '[email protected]', 'name' => 'myname'], 
    'encryption' => env('MAIL_ENCRYPTION', 'tls'), 
    'username' => env('MAIL_USERNAME', '[email protected]'), 
    'password' => env('MAIL_PASSWORD', 'mypassword'), 
    'sendmail' => '/usr/sbin/sendmail -bs', 
    'pretend' => false, 
]; 

它已成功发送电子邮件。但它没有动态发件人。 这是mail.php的邮件发件人

如何保持其动态发件人?

谢谢

回答

0

这是不可能的,如果你使用Gmail服务器从动态发件人发送邮件。为了安全起见,Gmail会将您的发件人地址转换为您的默认地址。为了防止垃圾邮件的许多电子邮件服务器(如Gmail,Hotmail等)不要让你这样做。作为一个例子,你可以发送电子邮件从巴拉克奥巴马的电子邮件地址

如果它是非常重要的,从动态地址发送电子邮件给你,你可以使用原始PHP函数mail()

$header = 'From: [FEEDBACK] <'.$email_from.'>'."\r\n".'Reply-To:'.$email_from."\r\n".'X-Mailer: PHP/' . phpversion(); 
$sent = mail('[email protected]',$subject,$body,$header); 

这个代码将无法在本地主机工作,除非您配置XAMPP或wampp或mampp

+0

它在localhost中工作。但我有问题。当我将邮件主机更改为'host'=> env('MAIL_HOST','ssl://secure.emailsrvr.com')时,会出现错误消息:StreamBuffer.php中的Swift_TransportException行265:无法建立连接主机SSL://secure.emailsrvr.com [php_network_getaddresses:getaddrinfo失败:请求的名称是有效的,但没有找到请求类型的数据。 #0]。如何解决这个问题呢?谢谢。 –

+0

@mosestoh可能是唯一的'secure.emailsrvr.com',如果你想使用'ssl'改变这一行''encryption'=> env('MAIL_ENCRYPTION','ssl')' – smartrahat

+0

我的设置是这样的: http://pastebin.com/1GCUPsun。没有错误,但无法发送电子邮件 –