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

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

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

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

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

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

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

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

 ini_set("SMTP","ssl://smtp.gmail.com"); ini_set("smtp_port","465"); 

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

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

Swift Mailer – отличная почтовая библиотека PHP, которая поддерживает SSL / TLS SMTP из коробки . Подумайте о том, чтобы использовать его вместо функции, связанной с ошибкой.

В моем случае 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-сервером.

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

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

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

 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); } 

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

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

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

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

 smtp.gmail.com Port: 587 

Задача решена,

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

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

 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject 

и изменено

 -o smtpd_tls_security_level=encrypt to -o smtpd_tls_security_level=may 

И работал над штрафом

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 

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

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