2015-09-05 6 views
2

Я пытаюсь добавить аутентификацию SMTP в свой php-скрипт с помощью функции PHP mail().SMTP-аутентификация с помощью функции PHP mail()

В настоящее время скрипт работает, но поскольку он не использует аутентификацию SMTP, в заголовок включается путь к файлу php и многие другие конфиденциальные данные (имя пользователя учетной записи и т. Д.).

В настоящее время я указываю часть информации заголовка, используя «$ headers =» и т. Д., Но я понимаю, что мне нужно использовать аутентификацию SMTP, чтобы исправить это.

Есть ли простой способ заставить мой скрипт использовать аутентификацию SMTP без использования phpmailer и т. Д.? Могу ли я просто указать порт, аутентификацию, имя пользователя, пароль?

Спасибо так много,

БЭК

Update: Вот пришел код:

  `code`$eol = PHP_EOL; 
      $headers = "From: Test <[email protected]>".$eol; 
      $headers .= "Reply-To: [email protected]".$eol; 
      $headers .= "MIME-Version: 1.0".$eol; 
      $headers .= "Content-Type: multipart/mixed; boundary=\"$random_hash\"".$eol.$eol; 
      $subject = 'Subject Goes Here'; 
      $message="--".$random_hash.$eol; 
      $message.="Content-Type: text/plain; charset=UTF-8".$eol; 
      $message.="Content-Transfer-Encoding: 8bit".$eol.$eol; 
      $message.="Hello,".$eol; 
      $message.="Body content goes here.".$eol.$eol; 
      $message.="Thank you,".$eol.$eol; 
      $message.="--".$random_hash.$eol; 
      @mail(to, subject, message, headers);`code` 
+0

Какая платформа? Какой MTA? Сама по себе функция 'mail()' не выполняет никакой авторизации. – mario

+0

привет Марио, CENTOS 6.7 с EXIM. – user3525455

+0

Добавить образец –

ответ

5

Почему бы вам не попробовать что-то интерфейс Груша почты, как это:

require_once "Mail.php"; 
$username = '[email protected]'; 
$password = 'password'; 
$smtpHost = 'ssl://smtp.gmail.com'; 
$smtpPort = '465'; 
$to = '[email protected]'; 
$from = '[email protected]'; 

$subject = 'Contact Form'; 
$successMessage = 'Message successfully sent!'; 


$replyTo = ''; 
$name = ''; 
$body = ''; 


$headers = array(
    'From' => $name . " <" . $from . ">", 
    'To' => $to, 
    'Subject' => $subject 
); 
$smtp = Mail::factory('smtp', array(
      'host' => $smtpHost, 
      'port' => $smtpPort, 
      'auth' => true, 
      'username' => $username, 
      'password' => $password 
     )); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo($mail->getMessage()); 
} else { 
    echo($successMessage); 
} 

Дополнительная информация на https://goo.gl/HjffYA

EDIT:

Единственный способ это без дополнительного кодирования или с помощью внешней библиотеки, чтобы обновить Sendmail:

определить SMTP-сервер

smtp_server=mail.mydomain.com 

Если вам нужно изменить SMTP и SSL порты ; Порт SMTP (обычно 25)

smtp_port=25 

; SMTPS (SSL) support 
; auto = use SSL for port 465, otherwise try to use TLS 
; ssl = alway use SSL 
; tls = always use TLS 
; none = never try to use SSL 

smtp_ssl=auto 

И, наконец, ваши учетные данные аутентификации для SMTP-сервера:

auth_username=username 
auth_password=password 

Ref: http://php.net/manual/en/ref.mail.php

+0

Привет Энцо, спасибо за помощь. Можно ли использовать аутентификацию SMTP с функцией mail(), не полагаясь на PEAR, чтобы мне не пришлось переписывать весь код php? – user3525455

+0

Проверьте это, если это может вам помочь. – Enzo

+0

Привет Энцо, спасибо за вашу помощь. Это может быть глупый вопрос, но добавить это в php-файл или мне нужно отредактировать php.ini и sendmail.ini? – user3525455

Смежные вопросы