2015-03-26 7 views
0

Я разрабатываю веб-сайт с использованием cakephp 3.0, и я пытаюсь отправить письмо с подтверждением с моего localhost (xampp) с помощью сервера gmail. Я могу точно сказать, что моя функция контроллера выполнена, но ничего не происходит, нет электронной почты, нет ошибок, нет журнала и т. Д.Отправить письмо с localhost с помощью gmail

Я прочитал here, что вы не можете отправлять электронную почту с localhost (отсюда попытка использовать gmail для отправки она)

Вот мой конфиг в app.php

'EmailTransport' => [ 
    'default' => [ 
     'className' => 'Mail', 
     // The following keys are used in SMTP transports 
     'host' => 'smtp.gmail.com', 
     'port' => 587, 
     'timeout' => 30, 
     'username' => '[email protected]', 
     'password' => 'password', 
     'client' => null, 
     'tls' => true, 
    ], 
], 

'Email' => [ 
    'default' => [ 
     'transport' => 'default', 
     'from' => '[email protected]', 
    ], 
], 

А вот моя функция, где я пытаюсь отправить по электронной почте.

public function send() 
{ 
    $email = new Email('default'); 
    $email->to('[email protected]') 
      ->subject('About') 
      ->message('blablabla'); 

    if($email->send()) 
    { 
     return $this->render('confirmation'); 
    } 
} 

Я могу точно сказать, что этот код выполнен, потому что окно подтверждения отображается после нажатия кнопки send.

Что мне недостает, чтобы отправить электронное письмо?

+0

Вам лучше обратиться к документации: ** [http://book.cakephp.org/3.0/ ru/core-libraries/email.html # configuring-transports] (http://book.cakephp.org/3.0/en/core-libraries/email.html#configuring-transports) ** – ndm

+0

@ndm, что именно страница Я использовал, чтобы попытаться настроить отправку электронной почты. спасибо –

ответ

0

Вы не сможете отправить электронное письмо без сервера, на котором есть почтовый сервер. К сожалению, это не относится к xampp. Если вы пытаетесь отправить электронные письма из своего Gmail с помощью заголовка «От», я думаю, что вы неправильно понимаете использование параметра «От». «От» действительно только для принимающих сторон.

Пример:

Если у вас есть:

$headers = "From: [email protected]"; 

Принимающая сторона будет видеть письмо было отправлено из [email protected] Однако письмо по-прежнему отправляется с вашего почтового сервера (так на локальном хосте, вы не сможете этого сделать, поскольку у него нет почтового сервера).

Для получения более подробной информации об отправке сообщений электронной почты с PHP, перейдите http://www.w3schools.com/php/func_mail_mail.asp

+1

Зачем нужен почтовый сервер при использовании внешнего SMTP? CakePHPs SMTP-адаптер будет напрямую связываться с настроенным внешним сервером. ps, XAMPP для Windows поставляется с Mercury, OSX имеет Postfix, входящий в комплект поставки, и Linux, ну, многие дистрибутивы поставляются с каким-то почтовым сервером. – ndm

0

Попробуйте с

'EmailTransport' => [ 
    'default' => [ 
     'className' => 'Smtp', 
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'timeout' => 30, 
     'username' => '[email protected]', 
     'password' => 'password', 
     'tls' => true, // This may not be needed 
    ], 
], 
+0

Спасибо, я поменял свой файл конфигурации на этот, и у меня все еще нет почты в моем почтовом ящике и нет ошибки –

+0

Но были ли у вас какие-либо ошибки подключения? –

+0

Отсутствие ошибки и отсутствие электронной почты. Сегодня вечером я посмотрю его с включенным отладчиком. –