Я отправляю письма с моего сайта с помощью функции php mail. Но теперь он не работает, и я связался с нашей командой хостинга, тогда они сказали мне использовать smtp, поскольку они внесли некоторые изменения на сервере. Я не знаю, как это сделать. Текущий код (с функцией php mail) заключается в следующем, может ли кто-нибудь помочь мне в изменениях, которые я должен сделать с этим.
<?php $mail_To="someone@gmail.com"; $headers = ""; $headers .= "From: livetv@muscle-tube.com\n"; $headers .= "Reply-To: livetv@muscle-tube.com\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "X-Mailer: php"; $mail_Subject = " Live TV key"; $mail_Body = "<p>Muscle-tube</p>"; mail($mail_To, $mail_Subject, $mail_Body,$headers);
?>
Функция PHP mail()
не поддерживает SMTP. Вам нужно будет использовать что-то вроде пакета PEAR Mail .
Вот пример почтового сценария SMTP:
<?php require_once("Mail.php"); $from = "Your Name <email@blahblah.com>"; $to = "Their Name <otheremail@whatever.com>"; $subject = "Subject"; $body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit..."; $host = "mailserver.blahblah.com"; $username = "smtp_username"; $password = "smtp_password"; $headers = array('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if ( PEAR::isError($mail) ) { echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message sent.</p>"); } ?>
Но теперь он не работает, и я связался с нашей хостинговой командой, после чего они сказали мне использовать smtp
Newsflash – раньше он использовал SMTP. Они не предоставили вам информацию, необходимую для решения проблемы, или вы не передали ее точно здесь.
Возможно, что они отключили локальный MTA на веб-сервере, и в этом случае вам нужно будет подключить SMTP-порт на удаленном компьютере. Есть много наборов инструментов, которые сделают тяжелый подъем для вас. Лично мне нравится phpmailer, потому что он добавляет другие функции.
Конечно, если они убрали объект, который был там раньше, и вы заплатили за услугу, то ваш провайдер должен дать вам лучшую поддержку, чем это (есть также много программ, которые нужно заменить вместо полного MTA, который будет работа).
C.
Обратите внимание, что настройки почты PHP поступают из файла php.ini. Значение по умолчанию выглядит примерно так:
[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = me@example.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path ;sendmail_path = ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = On ; Log all mail() calls including the full path of the script, line #, to address and headers ;mail.log =
Изменив файл php.ini, вы сможете исправить проблему, не изменяя свои PHP-скрипты. Кроме того, вы можете протестировать соединение с инструментом telnet и командами HELO, MAIL FROM, RCPT TO, DATA, QUIT, если вы напрямую подключаетесь к SMTP-серверу. С помощью sendmail вам даже не нужно, sendmail должен знать, что он делает (хотя в вашем случае это, вероятно, не было, и параметры sendmail, вероятно, нуждались в небольшой помощи.)
Поскольку некоторые из приведенных здесь ответов связаны с настройкой SMTP в целом (а не только для @shinod конкретной проблемы, где он работал и остановился), я подумал, что было бы полезно, если бы я обновил ответ, потому что это намного проще теперь, чем раньше 🙂
В PHP 4 пакет PEAR Mail обычно уже установлен, и этот действительно простой учебник показывает вам несколько строк кода, которые необходимо добавить в ваш php-файл. http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication .htm
Большинство хостинговых компаний перечисляют настройки SMTP, которые вам понадобятся. Я использую JustHost, и они перечисляют их по адресу https://my.justhost.com/cgi/help/26 (под сервером исходящей почты)
Функция электронной почты php email()
mail transfer agent
основному mail transfer agent
который обычно является postfix
в системах linux
поэтому предпочтительный метод в linux – это настроить ваш постфикс на использование ретранслятора, который выполняется линией
relayhost = smtp.example.com
в /etc/postfix/main.cf
однако в сценарии OP я как-то подозреваю, что это работа, которую должна выполнить его hosting team