php - texto - Código de respuesta esperada 220 pero obtuvo el código "" con mensaje ""
string strip_tags (3)
Cada vez que envío el formulario de contacto en mi aplicación Laravel, recibo el mensaje de error en el título. He seguido la recomendación en esta discusión , pero no ha tenido ningún efecto incluso después de la php artisan cache:clear
y php artisan config:cache
. Aquí está el código relevante:
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl
config / mail.php
<?php
return [
''driver'' => env(''MAIL_DRIVER'', ''smtp''),
''host'' => env(''MAIL_HOST'', ''smtp.gmail.org''),
''port'' => env(''MAIL_PORT'', 587),
''from'' => [
''address'' => env(''MAIL_FROM_ADDRESS'', ''[email protected]''),
''name'' => env(''MAIL_FROM_NAME'', ''Example''),
],
''encryption'' => env(''MAIL_ENCRYPTION'', ''tls''),
''username'' => env(''MAIL_USERNAME''),
''password'' => env(''MAIL_PASSWORD''),
''sendmail'' => ''/usr/sbin/sendmail -bs'',
''markdown'' => [
''theme'' => ''default'',
''paths'' => [
resource_path(''views/vendor/mail''),
],
],
];
Estaba bajo la impresión de la documentación de que el ''desde'' global no se activaría a menos que no se proporcionara ninguna otra dirección, pero en mi controlador para el correo, especifiqué la dirección suministrada al formulario de contacto como ''de,'' es que un punto de conflicto de alguna manera? No parece ser de los detalles del mensaje de error.
Como el formulario de contacto no es una vista distinta sino la parte inferior de la vista de la página principal, la función del controlador reside en PageController
public function postContact(Request $request) {
$this->validate($request, [
''email'' => ''required|email'',
''subject'' => ''required|min:3'',
''message'' => ''required|min:10''
]);
$data = array(
''email'' => $request->email,
''subject'' => $request->subject,
''mailbody'' => $request->message
);
Mail::send(''emails.contact'', $data, function($message) use ($data) {
$message->from($data[''email'']);
$message->to(''[email protected]'');
$message->subject($data[''subject'']);
});
}
Creo que debes definir al remitente del correo ( MAIL_FROM_ADDRESS
) como tu gmail con el que deseas usar el envío de correos electrónicos.
por ejemplo, si su MAIL_USERNAME
en .env
es [email protected] , debe definir su MAIL_FROM_ADDRESS
(o, por supuesto, $mail->from()
) como [email protected] .
No creo que Gmail le permita enviar correos electrónicos como otro usuario (otra dirección).
Problema similar puerto 587
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=mypassword
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=secreat
MAIL_ENCRYPTION=ssl
Actualice el código anterior en Su archivo .env y luego ejecute estos comandos en la terminal
composer dump-autoload
php artisan serve