2011-12-08 40 views
0

我想嘗試發送郵件使用蛋糕php。我沒有發送郵件的經驗。所以,我不知道從哪裏開始。是否需要製作郵件服務器?如果需要,如何製作郵件服務器以及如何發送郵件?請一步一步解釋。我真的不知道從哪裏開始。如何使用蛋糕php發送郵件以及從哪裏開始?

我使用xampp,現在我測試我的網站在本地。

我測試了以下鏈接:

http://book.cakephp.org/view/1286/Sending-a-basic-message

但發生錯誤不能直接訪問。

,然後我添加代碼從以下鏈接:

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

所以,我的代碼如下:

function _sendMail(){ 
    $this->Email->to = '[email protected]'; 
    $this->Email->bcc = array('[email protected]'); 
    $this->Email->subject = 'Welcome to our really cool things'; 
    $this->Email->replyTo = '[email protected]'; 
    $this->Email->from = 'Online Application <[email protected]>'; 
    $this->Email->template = 'simple_message'; 
    $this->Email->sendAs = 'both'; 

    $this->Email->smtpOptions = array(
      'port' =>'25', 
     'timeout' => '30', 
     'host' => 'ssl://smtp.gmail.com', 
     'username' => '[email protected]', 
     'password' =>'aaa', 
    ); 
    $this->Email->delivery = 'smtp'; 
    $this->Email->send(); 
    } 

但錯誤仍然發生。但是,我沒有製作任何郵件服務器。那可以嗎?

+0

向我們展示**代碼所在的**控制器方法**以及您如何嘗試調用它! – deceze

回答

1

我有一種感覺,這是你的XAMPP配置做:

嘗試打開「的php.ini」,它應該是在某處你的服務器上的文件。

在php.ini文件中搜索名爲「SMTP」的屬性。通常可以找到「SMTP = localhost」行。將localhost更改爲ISP的smtp服務器名稱。而且,還有一個屬性叫做「smtp_port」,它應該設置爲25.我在php.ini文件中設置了以下值。

SMTP = smtp.wlink.com.np 
smtp_port = 25 

重新啓動Apache服務器,使PHP模塊和屬性將重新加載。

流嘗試使用郵件來發送郵件()函數:

mail(「[email protected]」,」test subject」,」test body」); 

如果您收到以下警告:

Warning: mail() [function.mail]: 「sendmail_from」 not set in php.ini or custom 「From:」 header missing in C:\Program Files\xampp\htdocs\testmail.php on line 1 

指定下列頭,然後再次嘗試發送郵件:

$headers = ‘MIME-Version: 1.0′ . 「\r\n」; 
$headers .= ‘Content-type: text/html; charset=iso-8859-1′ . 「\r\n」; 
$headers .= ‘From: [email protected]’ . 「\r\n」; 
mail(「[email protected]」,」test subject」,」test body」,$headers); 

源:http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html

+0

謝謝。我知道了。 –

0

嘗試:

 
//load mail component in controller 
var $components = array('Mail'); 

//then do 

$this->Email->sendAs="html"; 
$this->Email->from="[email protected]"; 
$this->Email->to="[email protected]";  
$this->Email->subject="Your subject; 
$this->Email->send("Your message); 

//檢查CakePHP的手冊,瞭解更多參考:http://book.cakephp.org/

+0

我已經嘗試過,但不是正確的,並且發生錯誤**無法直接訪問** –

+0

@shariphwar您[仍然](http://stackoverflow.com/questions/8396806/how-to-send-mail- by-cake-php)混淆問題!對我來說,似乎你只是把這個電子郵件代碼放在受保護的控制器操作中,並且無法訪問。你的電子郵件代碼很好!向我們提供關於環繞真實問題的更多信息! – deceze

+0

現在,我的問題被編輯。請檢查我的錯誤。 –

1

命名控制器功能與領先的下劃線是蛋糕的指示,該功能應該保護的向後兼容的方式即,該功能不應該作爲正常的控制器操作來訪問。這意味着您無法使用網址/foo/_sendMail或任何其他網址訪問FooController::_sendMail()。你應該看到這個,國際海事組織是一個非常好的錯誤信息:

Private Method in UsersController

Error: FooController::_sendMail() cannot be accessed directly.

刪除前導下劃線,就是這樣。這個問題與發送電子郵件無關。

+0

謝謝。我知道了。消息是否真的到了?我嘗試發送上述功能,但消息沒有到達我的Gmail。爲什麼? –

+0

這是一個不同的話題,我不知道。 Email-> send()實際上是否返回true? – deceze

+0

請在下面查看我的答案,它可能會幫助你。 XAMPP通常沒有配置爲發送電子郵件。 – swiecki

0

下面是用於發送HTML電子郵件CakePHP的電子郵件組件


防爆控制器的示例代碼:EmailController.php

<?php 
class EmailController extends AppController{ 

public $components=array('Email'); 

function send(){ 

//create an array of values to be replaced in email html template// 
$emailValues=array('name'=>'MyName','phone'=>'MyPhone'); 
$this->set('emailValues',$emailValues);//pass to template // 
$this->Email->to = '[email protected]'; //receiver email id 
$this->Email->subject = 'Subject Line'; 
$this->Email->replyTo = '[email protected]'; //reply to email// 
$this->Email->from = 'SenderName<[email protected]>'; //sender 
$this->Email->template = 'sample';//email template // 
$this->Email->sendAs = 'html'; 
if($this->Email->send()){ 
//mail send // 
} 

} 

?> 

現在,創建文件夾中的郵件模板/瀏覽/電子郵件/ html/ 即模板路徑應該是 /Views/Email/html/sample.ctp

sample.ctp

<?php 

Hi <?php echo $emailValues['name'];?> <br> 
Thanks for sharing your phone number '<?php echo $emailValues['phone'];?>' . 
<br> 


?>