2015-02-15 5 views
0

хорошо, поэтому я уже много раз пробовал. Результаты не ошибка, но я не получал электронную почту в почтовом ящике или спам папкуКак отправить e-mail с localhost с помощью phpmailer?

вот мой mail.php

<?php 


require 'phpmailer/PHPMailerAutoload.php'; 

$mail = new PHPMailer(); 
//$mail->IsSMTP(); // telling the class to use SMTP 
//$mail->Host = "localhost"; // SMTP server 
//IsSMTP(); // send via SMTP 
$mail->SMTPDebug = true; 
$mail->IsSMTP(); 
$mail->Host  = "smtp.gmail.com"; // SMTP server Gmail 
$mail->Mailer = "gmail"; 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->SMTPSecure = 'tls'; 
$mail->Port = 587; 


$mail->Username = "henrikus.[email protected]"; // 
$mail->Password = "******"; // SMTP password 
$webmaster_email = "[email protected]"; //Reply to this email ID 
$email = "[email protected]"; // Recipients email ID 
$name = "Hendrikus Anthony"; // Recipient's name 
$mail->From = $webmaster_email; 
$mail->FromName = "Anthony"; 
$mail->AddAddress($email,$name); 
$mail->AddReplyTo($webmaster_email,"Anthony"); 
$mail->WordWrap = 50; // set word wrap 

$mail->IsHTML(true); // send as HTML 
$mail->Subject = "Ini adalah Email HTML"; 
$mail->Body = "Ini adalah email contoh"; //HTML Body 
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body 
if(!$mail->Send()) 
{ 
echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else 
{ 
echo "Message has been sent"; 
} 
?> 

пожалуйста, кто-то, мне очень нужна помощь. мне нужен хостинг? или что-то не так с моим синтаксисом? ли sendmail.ini и php.ini влияют на mail.php?

ответ

1

Вы не должны закомментировать строку, которая сообщает почтовик использовать SMTP, кроме вас действительно хотите использовать нормальную функцию почты, которую я не думаю, что вы хотите

<?php 
require 'PhpMailer/PHPMailerAutoload.php'; 

//Create a new PHPMailer instance 
    $mail = new PHPMailer; 
    $mail->isSMTP(); 
// change this to 0 if the site is going live 
    $mail->SMTPDebug = 2; 
    $mail->Debugoutput = 'html'; 
    $mail->Host = 'smtp.gmail.com'; 
    $mail->Port = 587; 
    $mail->SMTPSecure = 'tls'; 

//use SMTP authentication 
    $mail->SMTPAuth = true; 
//Username to use for SMTP authentication 
    $mail->Username = "[email protected]"; 
    $mail->Password = "******"; 
    $mail->setFrom('[email protected]', 'Somebody'); 
    $mail->addReplyTo('[email protected]', 'Somebody'); 
    $mail->addAddress('[email protected]', 'Somebody'); 
    $mail->Subject = 'New contact from somebody'; 
    // $message is gotten from the form 
    $mail->msgHTML($message); 
$mail->AltBody = $filteredmessage; 
    if (!$mail->send()) { 
     echo "We are extremely sorry to inform you that your message 
could not be delivered,please try again."; 
    } else { 
     echo "Your message was successfully delivered,you would be contacted shortly."; 
     } 
?> 

Обратите внимание, вы должны подключиться к Интернету для smtp gmail для работы

+0

Да, я подключен к интернету. затем, когда я попробую снова с вашим синтаксисом, он сказал: «Нам очень жаль сообщить вам, что ваше сообщение не могло быть доставлено, повторите попытку». –

+0

@HenrikusAnthony я снял это с скрипта, который я использовал только 13 часов назад, и я также просто проверил again.it работал, что-то может быть просто неправильно с вашим соединением или вы можете попробовать другой порт, скажем, 465, '$ mail-> Port = 465; ' – adelowo

+0

он работает как шарм! – user3197818

2

Для отправки почты вам необходим SMTP-сервер. Предполагая, что вы хотите использовать это для тестирования, попробуйте загрузить бесплатный SMTP-сервер, такой как this one.

Если вы хотите отправить почту в производственной среде, попробуйте использовать внешнюю службу, такую ​​как SendGrid или MailChimp. В качестве альтернативы, если вы хотите придерживаться SMTP, вы должны : понадобится ваш собственный веб-сервер для отправки почты.

+0

спасибо, я попробую –

+0

Не можем ли мы использовать SMTP-сервер, предоставляемый gmail? Или я смущен? – pravin

2

Вот мое решение, которое я узнал из нескольких статей.

<?php 

require_once "vendor/autoload.php"; 

$mail = new PHPMailer; 

//Enable SMTP debugging. 
$mail->SMTPDebug = 3;        
//Set PHPMailer to use SMTP. 
$mail->isSMTP();    
//Set SMTP host name       
$mail->Host = "smtp.gmail.com"; 
//Set this to true if SMTP host requires authentication to send email 
$mail->SMTPAuth = true;       
//Provide username and password  
$mail->Username = "[email protected]";     
$mail->Password = "password";       
//If SMTP requires TLS encryption then set it 
//$mail->SMTPSecure = "tls";       
//Set TCP port to connect to 
$mail->Port = 587;         

$mail->From = "[email protected]"; 
$mail->FromName = "Full Name"; 

$mail->smtpConnect(
    array(
     "ssl" => array(
      "verify_peer" => false, 
      "verify_peer_name" => false, 
      "allow_self_signed" => true 
     ) 
    ) 
); 

$mail->addAddress("[email protected]", "Recepient Name"); 

$mail->isHTML(true); 

$mail->Subject = "Subject Text"; 
$mail->Body = "<i>Mail body in HTML</i>"; 
$mail->AltBody = "This is the plain text version of the email content"; 

if(!$mail->send()) 
{ 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else 
{ 
    echo "Message has been sent successfully"; 
} 

Это не потребует каких-либо настроек сервера на вашем локальном хосте.

$mail->smtpConnect(
    array(
     "ssl" => array(
      "verify_peer" => false, 
      "verify_peer_name" => false, 
      "allow_self_signed" => true 
     ) 
    ) 
); 

Эта часть кода запрашивает smtp не проверять какое-либо соединение и может отправлять почту без проверки отправителя. Также вам необходимо включить параметры IMAP из настроек вашего почтового ящика.

Вот ссылки для справки. https://www.sitepoint.com/sending-emails-php-phpmailer/ https://github.com/PHPMailer/PHPMailer/issues/368#issuecomment-75821110

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