#php
#php
Вопрос:
У меня есть следующий код, который, я верю, будет работать, но для этого требуется Mail.php . Я установил pear mail, но у меня нет примера Mail.php файл. У кого-нибудь есть пример? Мне нужна помощь в установке этого на место, чтобы код выполнялся. Спасибо
require_once "Mail.php";
$from = "<me1@gmail.com>";
$to = "<me2@gmail.com>";
$subject = "Test from iyearbook!";
$body = "Hi,nnHow are you?";
$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "me@gmail.com";
$password = "password";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?> <!-- end of php tag--->
Ответ №1:
Вам не нужно вручную писать Mail.php файл класса. Когда вы устанавливаете его через pear, он устанавливается сам. Все дело в пути включения, если путь включения задан правильно, то Mail.php будет доступна для использования.
Проверьте свой путь включения pear. Когда вам требуется Mail.php выдает ли это какую-либо ошибку? Включите отчет об ошибках и посмотрите. Скорее всего, ваш путь к включению в pear не задан
Попробуйте это тоже:
<?php
require_once 'Mail.php';
var_dump(class_exists('Mail', false));
?>
Чтобы проверить / исправить путь включения pear, проверьте это:
http://pear.php.net/manual/en/installation.checking.php
Комментарии:
1. Спасибо за ответ, как мне проверить включение pear. Извините за новый вопрос.
2. PHP Предупреждение: Запуск PHP: Не удается загрузить динамическую библиотеку ‘/usr/lib/php5/20090626 lfs /ffmpeg.so’ — /usr/lib/php5 /20090626 lfs / ffmpeg.so: не удается динамически загрузить исполняемый файл в Unknown в строке 0
3. PHP Предупреждение: Запуск PHP: Не удается загрузить динамическую библиотеку ‘/usr/lib/php5 /20090626 lfs /suhosin.so’ — /usr/lib /php5 /20090626 lfs / suhosin.so: не удается открыть общий объектный файл: нет такого файла или каталога в Unknown в строке 0 PHP Предупреждение: require_once
4. Игнорируйте их. Возможно, это не причина вашей текущей проблемы. Запустите мой фрагмент кода, посмотрите, что вы получите
5. Предупреждение PHP: require_once (Mail.php ): не удалось открыть поток: нет такого файла или каталога в /var/www/2testmail.php в строке 2 PHP Фатальная ошибка: require_once(): требуется неудачное открытие ‘Mail.php ‘ (include_path=’.:/usr/share/php:/usr/share/pear’) в /var/www/2testmail.php в строке 2
Ответ №2:
Чтобы упростить процесс отправки электронной почты, я в конечном итоге создал свою собственную функцию, что-то вроде pearMail ($ кому, $ тема, $ сообщение, $ заголовок, $ returnEmail);
//To define $to , $subject , $html
//Optional defines $sender1 , $sender2
//REQUIRED EXAMPLE
// $to = ''; // Email address of the person the mail goes to
// $subject = $subject; // Subject for the email
// $html = '<html><body><p>This is a html message</p></body></html>'; // HTML version of the email
// $filename = 'mail/contact.html // and create an array called $params to replace in the email.
//POINT CORRECTLY
include('PEAR/Mail.php');
include('PEAR/mime.php');
//INFO UNCHANGABLE
$crlf = "n";
$headers = array('From' => $sender1, 'Return-Path' => $sender2, 'Subject' => $subject);
$mime = new Mail_mime($crlf);
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp_params["host"] = "ssl://smtp.gmail.com"; // SMTP host
$smtp_params["port"] = "465"; // SMTP host
$smtp_params["auth"] = true;
$smtp_params["username"] = "YOUR@EMAIL.COM"; // authentication.
$smtp_params["password"] = 'YOURPASSWORD';
$mail =amp; Mail::factory("smtp", $smtp_params);
$result = $mail->send($to, $headers, $body);