Лучший способ управлять отправкой электронной почты php

Я запрограммировал и разработал пакет CMS, созданный с нуля (Apache2+PHP+Mysql+Puspoold+Bitcoin) для майнинга биткойнов. У меня есть много разных дистрибутивов, которые используют мои пользователи, а также множество программ для работы с электронной почтой (sendmail/postfix). Мое приложение отлично работает на моем локальном компьютере с помощью sendmail, однако, похоже, оно не работает на системах VPS коммерческого типа, включая мою собственную, которая отделена от моего локального компьютера (просто для ясности).

В любом случае, как лучше всего использовать функцию mail() в PHP? Есть ли лучший способ получить фактическую ошибку, выводимую из почты, чем просто ложь? Также дополнительный вопрос, иногда mail() сообщает true и никогда не отправляет. Я чувствую себя настолько потерянным, что обычно у меня никогда не бывает таких проблем с ошибкой PHP, я их исправляю, в конце концов, эта доза, похоже, не хочет работать даже после переустановки пакетов sendmail.

Примечание. Я отредактировал файл php.ini в соответствии со своими потребностями, и я проверил лучшие практики sendmail для php.


person Xenland    schedule 11.07.2011    source источник
comment
Если ваш VPS использует exim4, вам может потребоваться перенастроить его, чтобы разрешить отправку электронных писем извне. В ubuntu\debian это «[sudo] dpkg-reconfigure exim4»   -  person mikeycgto    schedule 11.07.2011


Ответы (5)


попробуйте PEAR MAIL

person jerjer    schedule 11.07.2011

Я предлагаю вам использовать Zend Mail вместо родной функции php send(). Чтобы использовать это, вам нужно будет скопировать и включить библиотеки Zend (непосредственно в ваше приложение или в конфигурацию сервера).

Вот пример:

$config = array(
        'auth' => 'login',
        'username' => '[email protected]',
        'password' => 'password',
        'ssl' => 'tls',
        'port' => 587
    );

    $mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
    Zend_Mail::setDefaultTransport($mailTransport);


$mail = new Zend_Mail();
$mail->addTo($email);
$mail->setSubject($subject);
$mail->setBody($message);
$mail->setFrom('[email protected]', 'User Name');

//Send it!

try {
    $mail->send();
} catch (Exception $e){

}
person Mickle Foretic    schedule 27.11.2012

PHPMailer

Вот несколько примеров того, как использовать php mailer

http://phpmailer.worxware.com/index.php?pg=examples

person John    schedule 11.07.2011

Обычно я ретранслировал всю почту через сторонний smtp-сервер. Это можно сделать непосредственно в php.ini или перенастроив локальный почтовый сервер для ретрансляции всей электронной почты.

Какой сервер вы используете, зависит от вас. Вы можете попробовать настроить свою собственную и решить все проблемы с блокировкой спама и т. д. Или использовать стороннюю службу электронной почты, например SendGrid.

person datasage    schedule 11.07.2011

Попробуйте PHPMailer:

rohitashv.wordpress.com/2013/01/ 19/как отправить почту с помощью php/

person Rohitashv Singhal    schedule 16.07.2013