2016-01-31 5 views
0

Я пытаюсь отправить почту для контактной формы локально swiftmailer и gmail. Я проверил каждую строку, и я знаю, что проблема «setFrom».Набор SwiftMailerFrom не работает с переменной

$app->post('/contact', function ($request, $response, $args){ 
$body = $this->request->getParsedBody(); 

$name = $body['name']; 
$email = $body['email']; 
$msg = $body['msg']; 

if(!empty($name) && !empty($email) && !empty($msg)){ 
    $cleanName = filter_var($name,FILTER_SANITIZE_STRING); 
    $cleanEmail = filter_var($name,FILTER_SANITIZE_EMAIL); 
    $cleanMsg = filter_var($name,FILTER_SANITIZE_STRING); 

}else { 
    //redirecting to contact page 
} 

//sending email 

$transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') 
    ->setUsername('[email protected]') 
    ->setPassword('xxx'); 

$mailer= \Swift_Mailer::newInstance($transporter); 

$message = \Swift_Message::newInstance(); 

$message->setSubject('Email from our website'); 
$message->setTo(array('[email protected]')); 
$message->setBody($cleanMsg); 
$message->setFrom([ 
    $cleanEmail => $cleanName 
]); 

$result=$mailer->send($message); 

    if ($result > 0) { 
     $path = $this->get('router')->pathFor('home'); 
     return $response->withRedirect($path); 
    } else { 
     $path = $this->get('router')->pathFor('contact'); 
     return $response->withRedirect($path); 
    } 

});

Как вы можете видеть, я также использую Slim 3 framework. когда я запускаю код, я получаю эту ошибку:

Slim Application Error A website error has occurred. Sorry for the temporary inconvenience.

Но если я заменю $cleanEmail с '[email protected]' код работает! Что мне делать? Я знаю, что с помощью gmail я не могу изменить имя отправителя, но хочу загрузить этот код в веб-хостинге, и я не хочу, чтобы эта проблема возникала.

И может ли кто-нибудь предложить лучший способ перенаправления в Slim 3? Вместо этих двух линий:

$path = $this->get('router')->pathFor('contact'); 
     return $response->withRedirect($path); 

Я установил имена для своих маршрутов, как это:

$app->get('/contact', function ($req, $res, $args) { 
    return $this->view->render($res, "contact.twig"); 
})->setName('contact'); 

спасибо большое!

ответ

0

Возможно, вы захотите сделать следующее.

$cleanEmail = filter_var($email,FILTER_SANITIZE_EMAIL); 
$cleanMsg = filter_var($msg,FILTER_SANITIZE_STRING); 
+0

Ничего себе! Большое спасибо! вы спасли меня! Я не заметил эту ошибку, и я блуждал ... – Niloofar