开发者

cakephp emails not working

开发者 https://www.devze.com 2023-01-27 16:56 出处:网络
my problem is: in the controller I have: var $components = array(\'Email\'); the method to send emails looks like this:

my problem is:

in the controller I have:

var $components = array('Email');

the method to send emails looks like this:

function send_emails() {
  $this->Email->from    = 'Somebody <somebody@example.com>';
  $this->Email->to      = 'Somebody Else <myspamplace@centrum.cz>';
  $this->Email->subject = 'Test';
  $this->Email->send('Hello message body!');
 }

I am using Cake 1.3 and running it on localhost with Apache 2.2.11 and PHP5. Do you guys have any idea why it doesn't work?

When I put

$this->Email->delivery = 'debug';

in the code, it displays the email info and i开发者_如何学JAVAt seems like everything is ok.

Do you have any ideas what can be the reason why it doesn't send email?


If you're developing on a remote server, i.e. a hosting server, then that should work as it'll pick up the default email.

As you're not, you have to give the mail component some email capability. You can do this by, for example, feeding in your gmail (or whatever) smtp details, i.e. server, login, password.

   /* SMTP Options for GMAIL */
   $this->Email->smtpOptions = array(
        'port'=>'465', 
        'timeout'=>'30',
        'auth' => true,
        'host' => 'ssl://smtp.gmail.com',
        'username'=>'your_username@gmail.com',
        'password'=>'your_gmail_password',
   );

    /* Set delivery method */
    $this->Email->delivery = 'smtp';

See http://book.cakephp.org/view/1290/Sending-A-Message-Using-SMTP

If you're not sure what credentials to use, look it up in your email provider's help or faq. Typically it can be found by searching for how to set up Outlook or Thunderbird.


Are you sending from a windows server? If so, have you properly setup your MTA in the php ini? Can you send mail using the mail() function?

If you are on windows and need an MTA, hMail is great for development, note that many hosts will reject mail from your local machine a spam so don't use on production without an MX record, domain keys etc.


You need an SMTP server to send email. If you are trying to send it from your localhost, two good alternatives are:

  • FreeSMTP: A Windows-based tool that lets your computer act like an SMTP Server
  • Gmail: You can use your Gmail address for testing purposes.

You need to follow the instructions to send email using CakePHP through SMTP. You could also modify your php.ini settings to reflect the new settings.


I had the same problem, I forgot to enable ssl on my xampp server, for that it is necessary just to add(or uncomment) extension=php_openssl.dll line in your php.ini file. Hope it helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消