Как отправить почту, используя торт php и с чего начать? - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу попробовать отправить почту, используя торт php.У меня нет опыта отправки почты.Итак, я не знаю с чего начать.Нужно ли делать почтовый сервер?Если нужно, как сделать почтовый сервер и как отправить почту?Пожалуйста, объясните шаг за шагом.Я действительно не знаю, с чего начать.

Я использую xampp, и теперь я тестирую свой сайт на localhost.

Я протестировал следующую ссылку:

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 = 'user@gmail.com';
    $this->Email->bcc = array('secret@example.coom');
    $this->Email->subject = 'Welcome to our really cool things';
    $this->Email->replyTo = 'support@example.com';
    $this->Email->from = 'Online Application <app@example.coom>';
    $this->Email->template = 'simple_message';
    $this->Email->sendAs = 'both';

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

, но ошибка все еще произошла.Но я не сделал ни одного почтового сервера. Это нормально?

Ответы [ 4 ]

1 голос
/ 08 декабря 2011

Наименование функции контроллера с начальным подчеркиванием - это обратно совместимый способ Cake, указывающий, что функция должна быть защищена , то есть функция не должна быть доступна как обычное действие контроллера. Это означает, что вы не можете получить доступ к FooController::_sendMail(), используя URL /foo/_sendMail или любой другой URL в этом отношении. Вы должны увидеть это, что IMO является довольно хорошим сообщением об ошибке:

Частный метод в UsersController

Ошибка: FooController::_sendMail() не доступен напрямую.

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

1 голос
/ 08 декабря 2011

У меня такое ощущение, что это связано с вашей конфигурацией XAMPP:

Попробуйте открыть «php.ini», он должен быть где-то в файлах вашего сервера.

Поиск атрибута с именем«SMTP» в файле php.ini. Как правило, вы можете найти строку «SMTP = localhost«.измените localhost на имя сервера smtp вашего провайдера.И есть еще один атрибут с именем «smtp_port», который должен быть равен 25. Я установил следующие значения в моем файле php.ini.

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

Перезапустите сервер apache, чтобы модули и атрибуты PHPбудет перезагружен.

Теперь попробуйте отправить письмо с помощью функции mail ():

mail(“you@yourdomain.com”,”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: sender@sender.com’ . “\r\n”;
mail(“you@yourdomain.com”,”test subject”,”test body”,$headers);

источник: http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html

0 голосов
/ 31 января 2012

Вот пример кода для отправки электронного письма в формате HTML с компонентом электронной почты CakePHP


Ex controller: 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 = 'to@address.com'; //receiver email id
$this->Email->subject = 'Subject Line';
$this->Email->replyTo = 'reply@address.com'; //reply to email//
$this->Email->from = 'SenderName<sender@address.com>'; //sender
$this->Email->template = 'sample';//email template //
$this->Email->sendAs = 'html';
if($this->Email->send()){
//mail send //
}

}

?>

Теперь создайте шаблон электронной почты впапка / Views / Email / 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>


?> 
0 голосов
/ 08 декабря 2011

Попробуйте:

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

//then do

$this->Email->sendAs="html";
$this->Email->from="some@domain.com";
$this->Email->to="someone@domain.com";       
$this->Email->subject="Your subject;
$this->Email->send("Your message);

// Обратитесь к руководству пользователя CakePHP за дополнительной информацией: http://book.cakephp.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...