2014-11-10 2 views
1

Я пытаюсь отправить сообщение электронной почты с localhost XAMPP в почтовую почту, но в нем отображается сообщение «Ошибка». Мой код работает правильно на стороне веб-сервера.Ошибка при отправке электронной почты с localhost с помощью php

Я использую 64 бит. Я правильно следую инструкциям, как настроить отправку электронной почты с помощью XAMPP.

Иногда отправляется электронное письмо, но в основном это не так и всегда «таймаут соединения». Даже если на дисплее отображается сообщение «отправлено», я не получал никаких писем.

Как это исправить?

Вот php.ini

SMTP = smtp.live.com 
smtp_port = 587 
sendmail_from = same email as sendmail.ini 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 

sendmail.ini

smtp_server=smtp.live.com 
smtp_port=587 
auth_username=outlook email 
auth_password=******** 
force_sender=outlook email 

Моя электронная почта PHP

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

/* Email Detials */ 

$mail_to  = "email"; 
$from_mail = "email"; 
$from_name = "title"; 
$reply_to  = ""; 
$subject  = "subj..."; 
$message_body = ""; 

/* Attachment File 
Attachment location */ 

$file_name = "filename.xml"; 
$path = "C:/xampp/htdocs/Email/"; 

// Read the file content 

$file  = $path . $file_name; 
$file_size = filesize($file); 
$handle = fopen($file, "r"); 
$content = fread($handle, $file_size); 
fclose($handle); 
$content = chunk_split(base64_encode($content)); 

/* Set the email header 
Generate a boundary */ 

$boundary = md5(uniqid(time())); 

// Email header 

$header = "From: " . $from_mail . " \r\n"; 
$header .= "Reply-To: " . $reply_to . "\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 

// Multipart wraps the Email Content and Attachment 
$header .= "Content-Type: multipart/mixed;\r\n"; 
$header .= " boundary=\"" . $boundary . "\""; 

$message_body .= "This is a multi-part message in MIME format.\r\n\r\n"; 
$message_body .= "--" . $boundary . "\r\n"; 

/* Email content 
Content-type can be text/plain or text/html */ 

$message_body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"; 
$message_body .= "Content-Transfer-Encoding: 7bit\r\n"; 
$message_body .= "\r\n"; 
$message_body .= "$message_body\r\n"; 
$message_body .= "--" . $boundary . "\r\n"; 

/* Attachment 
Edit content type for different file extensions */ 

$message_body .= "Content-Type: application/xml;\r\n"; 
$message_body .= " name=\"" . $file_name . "\"\r\n"; 
$message_body .= "Content-Transfer-Encoding: base64\r\n"; 
$message_body .= "Content-Disposition: attachment;\r\n"; 
$message_body .= " filename=\"" . $file_name . "\"\r\n"; 
$message_body .= "\r\n" . $content . "\r\n"; 
$message_body .= "--" . $boundary . "--\r\n"; 

// Send email 
if (mail($mail_to, $subject, $message_body, $header)) { 
    echo "Sent"; 
} else { 
    echo "Error"; 
} 
+0

Возможно, эта ссылка может помочь u: http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp –

+0

Ваш 'php.ini' должен иметь' SMTP = smtp.live.com', а не 'SMTP = smtp: live. com'. –

+0

@isim я меняю его сейчас, но все же у меня ошибка – user4212650

ответ

0

ли ваша машина имеет доступ к порту 587?. (вы можете попробовать с помощью telnet или шпатлевки). Если порт закрыт, вы должны взглянуть на свой брандмауэр или маршрутизатор.

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