настройка smtp для почты php - PullRequest
       16

настройка smtp для почты php

11 голосов
/ 20 августа 2010

Я отправляю почту с моего сайта, используя функцию 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);
?>

Ответы [ 5 ]

13 голосов
/ 20 августа 2010

Функция 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>");
}
?>
2 голосов
/ 02 января 2013

Обратите внимание, что настройки почты 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, вероятно, понадобилась небольшая помощь.)

0 голосов
/ 22 марта 2017
Функция

php email() передает электронную почту основному mail transfer agent, который обычно postfix в системах linux

, поэтому предпочтительным методом в linux является настройка вашего postfix для использования relayhost, которыйвыполняется строкой

relayhost = smtp.example.com

в /etc/postfix/main.cf

, однако в сценарии ОП я почему-то подозреваю, что это работа, которую должна иметь его hosting teamсделано

0 голосов
/ 06 января 2013

Поскольку некоторые ответы, которые даются здесь, относятся к настройке 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 (под сервером исходящей почты)

0 голосов
/ 20 августа 2010

Но теперь это не работает, и я связался с нашей командой хостинга, после чего они сказали мне использовать smtp

Newsflash - раньше он использовал SMTP. Они не предоставили вам информацию, необходимую для решения проблемы, или вы не передали ее точно здесь.

Возможно, они отключили локальный MTA на веб-сервере, и в этом случае вам нужно будет подключить SMTP-порт на удаленной машине. Есть много инструментов, которые сделают тяжелую работу за вас. Лично мне нравится phpmailer , потому что он добавляет другую функциональность.

Конечно, если они забрали объект, который был там раньше, и вы платили за услугу, тогда ваш провайдер должен оказывать вам лучшую поддержку, чем эта (есть также много программ, которые можно заменить вместо полного MTA, который сделал бы работу).

С

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