Почтовая функция PHP не завершает отправку электронной почты

<?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; if ($_POST['submit']) { if (mail ($to, $subject, $body, $from)) { echo '<p>Your message has been sent!</p>'; } else { echo '<p>Something went wrong, go back and try again!</p>'; } } ?> 

Я пробовал создать простую форму письма. Сама форма находится на моей странице index.html , но отправляется на отдельную страницу «спасибо за ваше представление», thankyou.php , где встроен вышеуказанный PHP-код. Код отправляется отлично, но никогда не отправляет электронное письмо. пожалуйста помоги.

Добавить почтовый заголовок в функции почты

 $header = "From: noreply@example.com\r\n"; $header.= "MIME-Version: 1.0\r\n"; $header.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $header.= "X-Priority: 1\r\n"; $status = mail($to, $subject, $message, $header); if($status) { echo '<p>Your mail has been sent!</p>'; } else { echo '<p>Something went wrong, Please try again!</p>'; } 
  1. Всегда старайтесь отправлять заголовки в функцию почты.
  2. Если вы отправляете почту через localhost, выполните настройки smtp для отправки почты.
  3. Если вы отправляете почту через сервер, проверьте, включена ли функция отправки электронной почты на вашем сервере.

вы используете SMTP-конфигурацию для отправки вашей электронной почты? попробуйте вместо этого использовать phpmailer. вы можете загрузить библиотеку с https://github.com/PHPMailer/PHPMailer . Я создал электронную почту, отправив этот путь:

 function send_mail($email, $recipient_name, $message='') { require("phpmailer/class.phpmailer.php"); $mail = new PHPMailer(); $mail->CharSet="utf-8"; $mail->IsSMTP(); // set mailer to use SMTP $mail->Host = "mail.example.com"; // specify main and backup server $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = "myusername"; // SMTP username $mail->Password = "p@ssw0rd"; // SMTP password $mail->From = "me@walalang.com"; $mail->FromName = "System-Ad"; $mail->AddAddress($email, $recipient_name); $mail->WordWrap = 50; // set word wrap to 50 characters $mail->IsHTML(true); // set email format to HTML (true) or plain text (false) $mail->Subject = "This is a Sampleenter code here Email"; $mail->Body = $message; $mail->AltBody = "This is the body in plain text for non-HTML mail clients"; $mail->AddEmbeddedImage('images/logo.png', 'logo', 'logo.png'); $mail->addAttachment('files/file.xlsx'); if(!$mail->Send()) { echo "Message could not be sent. <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Message has been sent"; } 

он работал для меня на 000webhost, делая следующее:

 $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; $headers .= "From: ". $from. "\r\n"; $headers .= "Reply-To: ". $from. "\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); $headers .= "X-Priority: 1" . "\r\n"; 

Введите адрес электронной почты при отправке письма

 mail('email@gmail.com', $subject, $message, $headers) 

Используйте '' а не ""

Этот код работает, но письмо было получено с задержкой в ​​полчаса

Просто добавьте некоторые заголовки перед отправкой почты:

 <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html\r\n"; $headers .= 'From: from@example.com' . "\r\n" . 'Reply-To: reply@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); 

И вот еще. Функция mail() не работает в localhost. Загрузите свой код на сервер и попробуйте.

Попробуйте эти две игры отдельно и вместе:

  1. удалите if($_POST['submit']){}
  2. удалить $from (только моя кишка)

Если вы используете только функцию mail() , вам необходимо заполнить файл конфигурации.

Вам нужно открыть расширение почты и установить SMTP smtp_port и т. Д., И самое главное, ваше имя пользователя и пароль. Без этого почта не может быть отправлена. Кроме того, вы можете использовать класс PHPMail для отправки.

Вы можете использовать конфигурационную электронную почту с помощью codeigniter, например, используя smtp (простой способ):

 $config = Array( 'protocol' => 'smtp', 'smtp_host' => 'mail.domain.com', //your smtp host 'smtp_port' => 26, //default port smtp 'smtp_user' => 'name@domain.com', 'smtp_pass' => 'password', 'mailtype' => 'html', 'charset' => 'iso-8859-1', 'wordwrap' => TRUE ); $message = 'Your msg'; $this->load->library('email', $config); $this->email->from('name@domain.com', 'Title'); $this->email->to('emaildestination@domain.com'); $this->email->subject('Header'); $this->email->message($message); if($this->email->send()) { //conditional true } 

Это работает для меня!

Для тех, кто находит это в будущем, я бы не рекомендовал использовать mail . Есть некоторые ответы, которые касаются этого, но не почему .

mail функция PHP не только непрозрачна, но и полностью использует то, что вы используете (то есть Sendmail) для выполнения этой работы. mail ТОЛЬКО скажет вам, не удалось ли MTA принять его (т. е. Sendmail был отключен при попытке отправить). Он не может сказать вам, была ли почта успешной, потому что она была передана. Как таковой (как детали ответов Джона Конде), вы теперь можете возиться с журналами MTA и надеяться, что он расскажет вам об отсутствии возможности исправить его. Если вы находитесь на общем хосте или не имеете доступа к журналам MTA, вам не повезло. К сожалению, по умолчанию для большинства ванильных инсталляций для Linux обрабатывается так.

Почтовая библиотека ( PHPMailer , Zend Framework 2+ и т. Д.) Делает что-то очень отличное от mail . То, что они делают, это открыть сокет непосредственно на принимающем почтовом сервере, а затем отправить SMTP-почтовые команды непосредственно через этот сокет. Другими словами, класс действует как собственный MTA (обратите внимание, что вы можете сказать библиотекам использовать mail чтобы в конечном итоге отправить почту, но я настоятельно рекомендую вам не делать этого).

Для вас это означает, что вы можете непосредственно видеть ответы с принимающего сервера (в PHPMailer, например, вы можете включить вывод отладки ). Больше нечего гадать, если почта не была отправлена ​​или почему.

Если вы используете SMTP (т. isSMTP() Вы вызываете isSMTP() ), вы можете получить подробную расшифровку сеанса SMTP, используя свойство SMTPDebug .

Установите этот параметр, включив в свой скрипт строку, подобную этой:

 $mail->SMTPDebug = 2; 

Вы также получаете преимущество лучшего интерфейса. С mail вы должны настроить все свои заголовки, вложения и т. Д. С библиотекой у вас есть специальная функция для этого. Это также означает, что функция выполняет все сложные элементы (например, заголовки).

В основном функция mail() отключена на общем хостинге. Лучше использовать SMTP. Лучшим вариантом будет Gmail или SendGrid.


SMTPconfig.php

 <?php $SmtpServer="smtp.*.*"; $SmtpPort="2525"; //default $SmtpUser="***"; $SmtpPass="***"; ?> 

SMTPmail.php

 <?php class SMTPClient { function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body) { $this->SmtpServer = $SmtpServer; $this->SmtpUser = base64_encode ($SmtpUser); $this->SmtpPass = base64_encode ($SmtpPass); $this->from = $from; $this->to = $to; $this->subject = $subject; $this->body = $body; if ($SmtpPort == "") { $this->PortSMTP = 25; } else { $this->PortSMTP = $SmtpPort; } } function SendMail () { $newLine = "\r\n"; $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine; if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP)) { fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); $talk["hello"] = fgets ( $SMTPIN, 1024 ); fputs($SMTPIN, "auth login\r\n"); $talk["res"]=fgets($SMTPIN,1024); fputs($SMTPIN, $this->SmtpUser."\r\n"); $talk["user"]=fgets($SMTPIN,1024); fputs($SMTPIN, $this->SmtpPass."\r\n"); $talk["pass"]=fgets($SMTPIN,256); fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); $talk["From"] = fgets ( $SMTPIN, 1024 ); fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); $talk["To"] = fgets ($SMTPIN, 1024); fputs($SMTPIN, "DATA\r\n"); $talk["data"]=fgets( $SMTPIN,1024 ); fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\n".$headers."\n\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n"); $talk["send"]=fgets($SMTPIN,256); //CLOSE CONNECTION AND EXIT ... fputs ($SMTPIN, "QUIT\r\n"); fclose($SMTPIN); // } return $talk; } } ?> . <?php class SMTPClient { function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body) { $this->SmtpServer = $SmtpServer; $this->SmtpUser = base64_encode ($SmtpUser); $this->SmtpPass = base64_encode ($SmtpPass); $this->from = $from; $this->to = $to; $this->subject = $subject; $this->body = $body; if ($SmtpPort == "") { $this->PortSMTP = 25; } else { $this->PortSMTP = $SmtpPort; } } function SendMail () { $newLine = "\r\n"; $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine; if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP)) { fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); $talk["hello"] = fgets ( $SMTPIN, 1024 ); fputs($SMTPIN, "auth login\r\n"); $talk["res"]=fgets($SMTPIN,1024); fputs($SMTPIN, $this->SmtpUser."\r\n"); $talk["user"]=fgets($SMTPIN,1024); fputs($SMTPIN, $this->SmtpPass."\r\n"); $talk["pass"]=fgets($SMTPIN,256); fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); $talk["From"] = fgets ( $SMTPIN, 1024 ); fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); $talk["To"] = fgets ($SMTPIN, 1024); fputs($SMTPIN, "DATA\r\n"); $talk["data"]=fgets( $SMTPIN,1024 ); fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\n".$headers."\n\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n"); $talk["send"]=fgets($SMTPIN,256); //CLOSE CONNECTION AND EXIT ... fputs ($SMTPIN, "QUIT\r\n"); fclose($SMTPIN); // } return $talk; } } ?> 

contact_email.php

 <?php include('SMTPconfig.php'); include('SMTPmail.php'); if($_SERVER["REQUEST_METHOD"] == "POST") { $to = ""; $from = $_POST['email']; $subject = "Enquiry"; $body = $_POST['name'].'</br>'.$_POST['companyName'].'</br>'.$_POST['tel'].'</br>'.'<hr />'.$_POST['message']; $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body); $SMTPChat = $SMTPMail->SendMail(); } ?> в <?php include('SMTPconfig.php'); include('SMTPmail.php'); if($_SERVER["REQUEST_METHOD"] == "POST") { $to = ""; $from = $_POST['email']; $subject = "Enquiry"; $body = $_POST['name'].'</br>'.$_POST['companyName'].'</br>'.$_POST['tel'].'</br>'.'<hr />'.$_POST['message']; $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body); $SMTPChat = $SMTPMail->SendMail(); } ?> в <?php include('SMTPconfig.php'); include('SMTPmail.php'); if($_SERVER["REQUEST_METHOD"] == "POST") { $to = ""; $from = $_POST['email']; $subject = "Enquiry"; $body = $_POST['name'].'</br>'.$_POST['companyName'].'</br>'.$_POST['tel'].'</br>'.'<hr />'.$_POST['message']; $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body); $SMTPChat = $SMTPMail->SendMail(); } ?> 

Я думаю, что это должно сделать трюк. Я просто добавил if(isset и добавил конкатенацию к переменным в теле, чтобы отделить PHP от HTML.

 <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From:" .$name."\r\n E-Mail:" .$email."\r\n Message:\r\n" .$message; if (isset($_POST['submit'])) { if (mail ($to, $subject, $body, $from)) { echo '<p>Your message has been sent!</p>'; } else { echo '<p>Something went wrong, go back and try again!</p>'; } } ?> 
 $name = $_POST['name']; $email = $_POST['email']; $reciver = '/* Reciver Email address */'; if (filter_var($reciver, FILTER_VALIDATE_EMAIL)) { $subject = $name; // To send HTML mail, the Content-type header must be set. $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From:' . $email. "\r\n"; // Sender's Email //$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender $template = '<div style="padding:50px; color:white;">Hello ,<br/>' . '<br/><br/>' . 'Name:' .$name.'<br/>' . 'Email:' .$email.'<br/>' . '<br/>' . '</div>'; $sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">" . $template . "</div>"; // Message lines should not exceed 70 characters (PHP rule), so wrap it. $sendmessage = wordwrap($sendmessage, 70); // Send mail by PHP Mail Function. mail($reciver, $subject, $sendmessage, $headers); echo "Your Query has been received, We will contact you soon."; } else { echo "<span>* invalid email *</span>"; } по $name = $_POST['name']; $email = $_POST['email']; $reciver = '/* Reciver Email address */'; if (filter_var($reciver, FILTER_VALIDATE_EMAIL)) { $subject = $name; // To send HTML mail, the Content-type header must be set. $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From:' . $email. "\r\n"; // Sender's Email //$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender $template = '<div style="padding:50px; color:white;">Hello ,<br/>' . '<br/><br/>' . 'Name:' .$name.'<br/>' . 'Email:' .$email.'<br/>' . '<br/>' . '</div>'; $sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">" . $template . "</div>"; // Message lines should not exceed 70 characters (PHP rule), so wrap it. $sendmessage = wordwrap($sendmessage, 70); // Send mail by PHP Mail Function. mail($reciver, $subject, $sendmessage, $headers); echo "Your Query has been received, We will contact you soon."; } else { echo "<span>* invalid email *</span>"; } по $name = $_POST['name']; $email = $_POST['email']; $reciver = '/* Reciver Email address */'; if (filter_var($reciver, FILTER_VALIDATE_EMAIL)) { $subject = $name; // To send HTML mail, the Content-type header must be set. $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From:' . $email. "\r\n"; // Sender's Email //$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender $template = '<div style="padding:50px; color:white;">Hello ,<br/>' . '<br/><br/>' . 'Name:' .$name.'<br/>' . 'Email:' .$email.'<br/>' . '<br/>' . '</div>'; $sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">" . $template . "</div>"; // Message lines should not exceed 70 characters (PHP rule), so wrap it. $sendmessage = wordwrap($sendmessage, 70); // Send mail by PHP Mail Function. mail($reciver, $subject, $sendmessage, $headers); echo "Your Query has been received, We will contact you soon."; } else { echo "<span>* invalid email *</span>"; } 

Попробуй это

 <?php $to = "somebody@example.com, somebodyelse@example.com"; $subject = "HTML email"; $message = " <html> <head> <title>HTML email</title> </head> <body> <p>This email contains HTML Tags!</p> <table> <tr> <th>Firstname</th> <th>Lastname</th> </tr> <tr> <td>John</td> <td>Doe</td> </tr> </table> </body> </html>"; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // More headers $headers .= 'From: <webmaster@example.com>' . "\r\n"; $headers .= 'Cc: myboss@example.com' . "\r\n"; mail($to,$subject,$message,$headers); ?> при <?php $to = "somebody@example.com, somebodyelse@example.com"; $subject = "HTML email"; $message = " <html> <head> <title>HTML email</title> </head> <body> <p>This email contains HTML Tags!</p> <table> <tr> <th>Firstname</th> <th>Lastname</th> </tr> <tr> <td>John</td> <td>Doe</td> </tr> </table> </body> </html>"; // Always set content-type when sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // More headers $headers .= 'From: <webmaster@example.com>' . "\r\n"; $headers .= 'Cc: myboss@example.com' . "\r\n"; mail($to,$subject,$message,$headers); ?> 

Попробуй это

 if ($_POST['submit']) { $success= mail($to, $subject, $body, $from); if($success) { echo ' <p>Your message has been sent!</p> '; } else { echo ' <p>Something went wrong, go back and try again!</p> '; } } 

Если у вас возникли проблемы с отправкой писем с помощью PHP, рассмотрите альтернативу, например PHPMailer или SwiftMailer .

Обычно я использую SwiftMailer, когда мне нужно отправлять письма с помощью PHP.


Основное использование:

 require 'mail/swift_required.php'; $message = Swift_Message::newInstance() // The subject of your email ->setSubject('Jane Doe sends you a message') // The from address(es) ->setFrom(array('jane.doe@gmail.com' => 'Jane Doe')) // The to address(es) ->setTo(array('frank.stevens@gmail.com' => 'Frank Stevens')) // Here, you put the content of your email ->setBody('<h3>New message</h3><p>Here goes the rest of my message</p>', 'text/html'); if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) { echo json_encode([ "status" => "OK", "message" => 'Your message has been sent!' ], JSON_PRETTY_PRINT); } else { echo json_encode([ "status" => "error", "message" => 'Oops! Something went wrong!' ], JSON_PRETTY_PRINT); } 

Более подробную информацию о том, как использовать SwiftMailer, см. В официальной документации .

Вы можете использовать функции empty () и isset (). Если вы хотите заставить его работать с разными файлами, просто измените action='yourphp.php' на html, который я вам даю, и store the PHP script в файл yourphp.php . Также вам нужно изменить index.html на index.php чтобы активировать функциональность PHP.

PHP

 <?php error_reporting(0); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; if ($_POST['submit']){ if (!(empty($_POST['name']))) { if (!(empty($_POST['email']))){ if (!(empty($_POST['message']))){ mail ($to, $subject, $body, $from); echo '<p>Your message has been sent!</p>'; }else{ echo '<p>Fill your message please.</p>';} }else { echo '<p>Fill your email please.</p>';} }else{ echo '<p>Fill your name please.</p>';} }else{ echo '<p>Fill the form.</p>';} ?> 

HTML

 <html> <form method="post" action="?"> <table> <tr><td>Name</td><td><input type='text' name='name' id='name'/></td></tr> <tr><td>Email</td><td><input type='text' name='email' id='email'/></td></tr> <tr><td>Message</td><td><input type='text' name='message' id='message'/></td></tr> <tr><td></td><td><input type='submit' name='submit' id='submit'/></td></tr> </table> </form> </html> 

С наилучшими пожеланиями!

Прежде всего,

У вас может быть много параметров для функции mail () … У вас может быть 5 макс. mail(to,subject,message,headers,parameters); при mail(to,subject,message,headers,parameters); Что касается переменной $from variable, это должно автоматически исходить из вашего веб-хостинга, если вы используете linux cPanel. Он автоматически исходит из вашего имени пользователя cPanel и IP-адреса.

 $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

Также убедитесь, что у вас есть правильный порядок переменных в вашей функции mail (). mail($to,$subject,$message,etc.) в этом порядке, иначе есть вероятность, что он не работает. Позвольте мне знать, если это помогает…

Убедитесь, что на вашем сервере установлен Sendmail.

Если вы проверили свой код и подтвердили, что там нет ничего плохого, перейдите в / var / mail и проверьте, пуста ли эта папка.

Если он пуст, вам нужно будет:

 sudo apt-get install sendmail 

если вы находитесь на сервере Ubuntu.

Для тех, кто не хочет использовать внешние почтовые программы и хочет отправлять почту () на выделенный Linux-сервер.

Способ написания php-сообщений в php.ini в разделе [mail function] . Параметр sendmail-path описывает, как вызывается sendmail. Значение по умолчанию – sendmail -t -i , поэтому, если вы получаете рабочий sendmail -t -i < message.txt в консоли linux – вы будете готовы. Вы также можете добавить mail.log для отладки и убедиться, что mail () действительно вызван.

Различные MTA могут реализовать sendmail . Например, в debian default используется postfix. Настройте свой MTA для отправки почты и протестируйте ее с консоли с помощью sendmail -v -t -i < message.txt . Файл message.txt должен содержать все заголовки сообщения и тело, адресаты назначения для конверта будут взяты из заголовка To: Пример:

 From: myapp@example.com To: mymail@example.com Subject: Test mail via sendmail. Text body. 

Я предпочитаю использовать ssmtp как MTA, потому что он прост и не требует запуска демона с открытыми портами. ssmtp подходит только для отправки почты с локального хоста, он также может отправлять аутентифицированную электронную почту через вашу учетную запись в общедоступной почтовой службе. Установите ssmtp и отредактируйте config /etc/ssmtp/ssmtp.conf . To be able also to recive local system mail to unix accounts(from cron jobs, for example) configure /etc/ssmtp/revaliases file.

Here is my config for my account on Yandex mail:

 root=mymail@example.com mailhub=smtp.yandex.ru:465 FromLineOverride=YES UseTLS=YES AuthUser=abcde@yandex.ru AuthPass=password 

This will only affect a small handful of users, but I'd like it documented for that small handful. This member of that small handful spent 6 hours troubleshooting a working PHP mail script because of this issue.

If you're going to a university that runs XAMPP from http://www.AceITLab.com, you should know what our professor didn't tell us: The AceITLab firewall (not the Windows firewall) blocks MercuryMail in XAMPP. You'll have to use an alternative mail client, pear is working for us. You'll have to send to a Gmail account with low security settings.

Yes, I know, this is totally useless for real world email. However, from what I've seen, academic settings and the real world often have precious little in common.

If you are running this code on a local server (ie your computer for development purposes) it wont send the email to the recipient. What will happen is, it will create a .txt file in a folder named mailoutput .

In the case if you are using a free hosing service like 000webhost or hostinger , those service providers disable the mail() function to prevent unintended uses of email spoofing, spamming etc. I prefer you to contact them to see whether they support this feature.

If you are sure that the service provider supports the mail() function, you can check this PHP manual for further reference, PHP mail()

To check weather your hosting service support the mail() function, try running this code, (Remember to change the recipient email address)

 <?php $to = 'nobody@example.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?> 

Hope this helped.

You can use libmail: http://lwest.free.fr/doc/php/lib/index.php3?page=mail&lang=en

 include "libmail.php"; $m = new Mail(); // create the mail $m->From( $_POST['form'] ); $m->To( $_POST['to'] ); $m->Subject( $_POST['subject'] ); $m->Body( $_POST['body'] ); $m->Cc( $_POST['cc']); $m->Priority(4); // attach a file of type image/gif to be displayed in the message if possible $m->Attach( "/home/leo/toto.gif", "image/gif", "inline" ); $m->Send(); // send the mail echo "Mail was sent:" echo $m->Get(); // show the mail source 

In case you are in development, you can try Papercut, You can test send mail in Your PC.

you should use Papercut this simple application to test send mail. and you don't need to configure anything.

Just run it and try test send mail:

test_sendmail.php

 <?php $to = "somebody@example.com"; $subject = "My subject"; $txt = "Hello world!"; $headers = "From: webmaster@example.com" . "\r\n" . "CC: somebodyelse@example.com"; mail($to,$subject,$txt,$headers); ?> 

and you will see this:

введите описание изображения здесь