2016-10-11 2 views
4

Я хочу отправить электронную почту на мою электронную почту, когда пользователь просматривает страницу.
Я сделал это успешно.Laravel не отправляется с адреса

Мой код выглядит следующим образом:

Route::any('contact_us/send', function() { 
    return Mail::send('contactus.send', ['name' => 'Advaith'], function($message) { 
     $name = $_POST['name']; 
     $from = $_POST['email']; 
     $message->to('[email protected]')->from($from, $name)->subject('Feed Back'); 
     //[email protected] is used in this question only 
    }); 
}); 

Этот код отправки e-mail на мой счет.

Но это не отправляет имя отправителя и адрес электронной почты ($name и $from)
Я даже пытался изменить переменные и дать пример по электронной почте к нему.

Мой .env файл выглядит следующим образом:

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
[email protected] 
MAIL_PASSWORD=********** 
MAIL_ENCRYPTION=tls 

Мой config/mail.php файл выглядит следующим образом:

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

Моя форма, которая отправляет данные, как это:

<form class="ad-form col-md-12" method="POST" action="/contact_us/send"> 
    {{ csrf_field() }} 
    <input placeholder="Name...*" type="text" name="name" required="required"> 
    <br> 
    <input placeholder="Email...*" type="email" name="email" required="required"> 
    <br> 
    <textarea required="required" placeholder="Your valuable feedback...*" name="comment" rows="5" cols="40"></textarea> 
    <br> 
    <input type="submit" name="submit" value="Send"> 
</form> 

И мой файл contactus/send.blade.php выглядит так:

<div style="border: 2px solid orange; padding: 30px;"> 
    <div>From: <b>{{ $_POST['name'] }}</b></div> 
    <div>From-Email: <b>{{ $_POST['email'] }}</b><hr></div><br> 
    <div style="text-align: justify;"><strong>{{ $_POST['comment'] }}</strong></div> 
</div> 

Пожалуйста, сообщите мне, почему он не отправляет адрес.

И, пожалуйста, также сообщите мне, как перейти на другую страницу после отправки электронной почты.

+0

какая версия Laravel являются вы используете? Я скопировал ваш код, и он хорошо работает в L5.3. –

+0

Внутри шаблона почты? Или он неправильно устанавливает почту из заголовка? –

+0

@shock_gone_wild 5. 3 только. Он отправляет почту, но не отправляет ее с адреса. – Advaith

ответ

1

Эта проблема не является проблемой Laravel. Вы сказали в комментарии, что написано, что вы отправили письмо самому себе. Это связано с тем, что gmail не позволяет использовать случайные адреса, чтобы предотвратить спам.

Вы должны зарегистрировать альтернативные адреса, прежде чем сможете использовать их в качестве своего «с адреса», или gmail изменит его на значение по умолчанию.

Для ссылки см here или here

Есть также некоторые SO Ressources, которые имеют дело с проблемой:

How to change from-address when using gmail smtp server,

When using Gmail for SMTP, can you set a different “from” address?

change sender address when sending mail through gmail in c#

Смежные вопросы