В PHP 7.2 мне пришлось сделать больше: установить «auth» в PLAIN, а затем добавить «verify_peer» и verify_peer_name для ssl socket_options, например:

Я использую PEAR Mail, я хочу использовать gmail SMTP для отправки почты. У меня есть Apache / 2.4.27 (Win64) PHP / 7.2.0beta3, PEAR 1.10.15, Mail 1.4.1, Net_SMTP 1.8.0, Net_Socket 1.2.2.

я пошел вphp.ini и добавилextension = php_openssl.dll,error.log не дает никаких ошибок, связанных с ssl.

Вот код

require_once "Mail.php";

$from = '<[email protected]>';
$to = '<[email protected]>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => '[email protected]',
        'password' => 'mypassword'
    ));

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

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
} else {
    echo('<p>Message successfully sent!</p>');
}

Проблема

Я получаю эту ошибку

Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) (code: -1, response: )]

и я понятия не имею, что делать, я погуглил, но запутался.

Пожалуйста, совет, как это исправить. Спасибо

Обновить

Следуя инструкциям Symcbean, я получил следующие результаты:

bool(true) 

array(5) { 
[0]=> string(31) "alt3.gmail-smtp-in.l.google.com" 
[1]=> string(26) "gmail-smtp-in.l.google.com" 
[2]=> string(31) "alt4.gmail-smtp-in.l.google.com" 
[3]=> string(31) "alt1.gmail-smtp-in.l.google.com" 
[4]=> string(31) "alt2.gmail-smtp-in.l.google.com" } 
IPV4 address = 64.233.188.27

If you've got this far without errors then problem is with your SSL config

Check you've got your cacerts deployed in one of the following locations
default_cert_file = C:\Program Files\Common Files\SSL/cert.pem
default_cert_file_env = SSL_CERT_FILE
default_cert_dir = C:\Program Files\Common Files\SSL/certs
default_cert_dir_env = SSL_CERT_DIR
default_private_dir = C:\Program Files\Common Files\SSL/private
default_default_cert_area = C:\Program Files\Common Files\SSL
ini_cafile = 
ini_capath = 

If all good so far, then this bit should work....
fsockopen 
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in C:\Apache24\htdocs\phptest2.php on line 28

Warning: fsockopen(): Failed to enable crypto in C:\Apache24\htdocs\phptest2.php on line 28

Warning: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) in C:\Apache24\htdocs\phptest2.php on line 28
bool(false) int(0) string(0) "" 

Строка 28 - это строкаvar_dump(fsockopen("ssl://smtp.gmail.com", 465, $errno, $errstr, 3.0));

еще раз спасибо

Обновление № 2

Я погуглил только "fsockopen (): операция SSL не удалась с кодом 1." первого предупреждения.

ЗавершитьВот , Я изменил почтовый порт AVG, как ответ. код symcbean выполняется без ошибок, но мой код ответилmail error : authentication failure [SMTP: Invalid response code received from server (code: 534, response: 5.7.14 Please log in via your web browser and 5.7.14 then try again. 5.7.14 Learn more at 5.7.14 https://support.google.com/mail/answer/78754 c1sm1243434wre.84 - gsmtp)]

Так я гуглилcode: 534, response: 5.7.14 и в конечном итогеВот, следуя инструкциям первого ответа от emgh3i, включил менее защищенные соединения и разрешил доступ к моей учетной записи Google

И теперь он работает отлично.

Ответы на вопрос(0)

Ваш ответ на вопрос