Ответ SMTP-сервера: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS - PullRequest
17 голосов
/ 10 марта 2011

Ответ SMTP-сервера: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS

Я получаю это сообщение об ошибке при использовании функции mail () в файле сценария php ...

Я использую SMTP-сервер Gmail и Gmail, используя STARTTLS, который является безопасным SSL для предотвращения спама и я уже использую эти команды в моем файле contact.php

ini_set("SMTP","smtp.gmail.com");
ini_set("sendmail_from","<email-address>@gmail.com>");

так, какую команду я могу использовать для включения STARTTLS или настройки в php, ini file ??

Ответы [ 9 ]

15 голосов
/ 10 марта 2011

Во-первых, убедитесь, что в вашей установке PHP есть поддержка SSL (ищите раздел «openssl» в выходных данных phpinfo()).

Вы можете установить следующие параметры в вашем PHP.ini:

ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
0 голосов
/ 25 сентября 2017

Для Windows я смог заставить его работать, включив TLS для безопасной связи на виртуальном SMTP-сервере. Протокол TLS не будет доступен на виртуальном SMTP-сервере без сертификата. Эта ссылка даст необходимые шаги.

https://support.microsoft.com/en-ie/help/4014125/how-to-configure-iis-smtp-for-outgoing-tls-authentication

0 голосов
/ 04 июня 2017

Я собираюсь поделиться своим путем, и он сработал для меня после реализации следующего:

Откройте файл Php.ini и заполните все значения в соответствующих полях, приняв ref из Настройки Gmail SMTP

Удалить комментарии из [mail function] Заявления, которые являются инструкциями для сервера smtp и соответствуют их значениям.

Также SMTP-сервер sendmail является поддельным сервером.Ничего, кроме текстового терминала (попробуйте написать что-нибудь на нем.: P).Он будет использовать gmail s, tp для отправки почты.Поэтому настройте его правильно, сопоставив настройки Gmail SMTP:

smtp.gmail.com
Port: 587
0 голосов
/ 10 марта 2017

Blockquote

I then modified the php.ini file to use it (commented out the other lines):

[mail function]
; For Win32 only.
; SMTP = smtp.gmail.com
; smtp_port = 25

; For Win32 only.
; sendmail_from = <e-mail username>@gmail.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"

Ignore the "For Unix only" comment, as this version of sendmail works for Windows.

You then have to configure the "sendmail.ini" file in the directory where sendmail was installed:

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=<username>
auth_password=<password>
force_sender=<e-mail username>@gmail.com

http://byitcurious.blogspot.com.br/2009/04/solving-must-issue-starttls-command.html

> Blockquote
0 голосов
/ 24 сентября 2016

Проблема решена,

Я отредактировал файл /etc/postfix/master.cf

и прокомментировал

-o smtpd_relay_restrictions=permit_sasl_authenticated,reject

и изменил строку с

-o smtpd_tls_security_level=encrypt 

до

-o smtpd_tls_security_level=may

и работал нормально

0 голосов
/ 18 марта 2013

У меня был ложный ответ на следующее:

fputs($connection, 'STARTTLS'.$newLine);

Оказывается, я использую неправильную переменную соединения, поэтому мне просто нужно было изменить ее на:

fputs($smtpConnect, 'STARTTLS'.$newLine);

Если вы используете TLS, не забудьте поставить HELO до и после:

fputs($smtpConnect, 'HELO '.$localhost . $newLine);
$response = fgets($smtpConnect, 515);
if($secure == 'tls')
{
    fputs($smtpConnect, 'STARTTLS'.$newLine);
    $response = fgets($smtpConnect, 515);
stream_socket_enable_crypto($smtpConnect, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);

// Say hello again!
    fputs($smtpConnect, 'HELO '.$localhost . $newLine);
    $response = fgets($smtpConnect, 515);
}
0 голосов
/ 27 сентября 2011

Из коробки Swift Mailer не может выполнять STARTTLS, однако некоторые хорошие ребята написали патч для него .

Я обнаружил, что патчить это было немного трудоемко (вероятно, все пошло не так), так что заархивировал его, готовый к загрузке здесь: Swift Mailer с STARTTLS

0 голосов
/ 07 августа 2011

В моем случае Swift Mailer тоже не мог помочь. Я нашел решение здесь: http://forum.powweb.com/showthread.php?t=73406 - поэтому после команды EHLO необходимо отправить команду STARTTLS, включив криптографию с помощью stream_socket_enable_crypto( $connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT ); и снова команду EHLO. Только это позволило мне отправлять электронные письма с моего «упрямого» SMTP-сервера.

0 голосов
/ 10 марта 2011

Я знаю, что PHPMailer может обрабатывать SMTP-транзакции такого типа.

Кроме того, поддельный sendmail с библиотекой sendmail-SSL должен выполнять эту работу.

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