2012-04-06 4 views
1

Я использую это очень маленький кусочек кода, чтобы проверить, достигает ли письмо адресата электронной почты:Отправка электронной почты с локального хоста в PHP в окнах

<?php 
    mail('[email protected]','Test mail','The mail function is working!'); 
    echo 'Mail sent!'; 
?> 

Но это не кажется, работает. Я использую WAMP. Я установил бесплатный SMTP-сервер. И мой файл php.ini настроен на следующее:

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = smtp.tools.sky.com 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
sendmail_from = [email protected] 

Я не кажется, получать по электронной почте [email protected] следующие действия, которые я упомянул.

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

Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 
Must issue a STARTTLS command first. ff2sm10904265wib.9 in 
C:\wamp\www\Derrysgc2\pages\pages\mailtest.php on line 2 

Любые предложения?

+0

К сожалению, смотри выше ошибки – user1278496

+0

Это звучит, как у вас есть сервер SMTP, который ожидает защищенное соединение. Я не уверен, что PHP может это сделать. Попробуйте локальный SMTP. – Ryan

ответ

4

Попробуйте использовать SMTP-сервер с gmail.

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

или еще есть много почтовых библиотек PHP. что упрощает вам работу и упрощает ее использование. мой fav - быстрая почта. самая лучшая часть - вам не нужно возиться со своим основным файлом конфигурации php, и документация тоже очень легко читается.

например, если вы хотите отправить почту с помощью быстрой библиотеки почтовых программ PHP, это так же просто.

require_once 'lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25) 
    ->setUsername('your username') 
    ->setPassword('your password'); 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself'); 

// Send the message 
$result = $mailer->send($message); 

вы можете обратиться к документации для получения дополнительной информации на официальном сайте http://swiftmailer.org/docs

1

Не должен ли SMTP указывать на ваш SMTP-сервер? (Я предполагаю, что ваш поставщик услуг smtp.tools.sky.com). Также sendmail_from должен быть правильным адресом электронной почты.

Также обратите внимание, что некоторые почтовые отправители блокируют электронную почту, отправленную с динамических адресов ip.

+0

Итак, мне нужно настроить SMTP-сервер, который я установил на моем локальном компьютере? – user1278496

+0

, а также в большинстве случаев ваш интернет-провайдер блокирует порт SMTP по умолчанию, то есть порт 25, вы можете попробовать изменить порт на 465 –

+0

Если вы хотите использовать собственный SMTP-сервер, тогда вы должны указать свой php.ini на ваш локальный сервер, затем сделайте это ретрансляцию сервера вашему провайдеру. – Jaco

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