У меня есть следующий код
$subject = "Subject Here"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'From: Domain Name <domain@domain.com>' . "\r\n"; $to = $email; $body = ' My Message here '; mail($to, $subject, $body, $headers);
и он отправляет почту правильно, но когда я вижу подробности в письме в gmail … он показывает
от имени домена до myemail@myemail.com date Вт, 25 мая 2010 года в 12:41 по теме мой вопрос здесь по почте mars.myhostingcompany.net
в то время как я хочу показать свой собственный адрес в почте по разделу, чтобы он был mydomain.com, а не mars.myhostingcompany.net
Я полагаю, что вы находитесь на общедоступном хостинге, поэтому причина, по которой он показывает адрес вашего хоста, заключается в том, что при настройке PHP существует параметр, называемый «sendmail_from», который является адресом по умолчанию для отправки почты в случае, если адрес не указан в ваш код.
Кажется, вы указываете правильные заголовки в своем коде, поэтому я могу думать только об одной возможности (которую я не могу проверить с этого компьютера). Попробуйте удалить <> вокруг своего адреса электронной почты – возможно, он пытается прочитать это как HTML, и поэтому у вас ничего нет. Это может произойти на машинах Windows, потому что сам PHP анализирует пользовательские заголовки, а не MTA (агент передачи сообщений), а PHP рассматривает любой <> как HTML.
Я понимаю, что он не выглядит профессиональным (поскольку клиент электронной почты не будет показывать имя при получении электронной почты), но если вы работаете с Windows-машиной, вы можете сделать это совсем немного, если не будете переключаться на альтернативу почтовый пакет.
$subject = "Subject Here"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers $headers .= 'From: domain@domain.com' . "\r\n"; $to = $email; $body = ' My Message here '; mail($to, $subject, $body, $headers);
Существует два типа отправителя (From), отправитель MIME
заголовка и отправитель envelope
.
Вы отправляете отправителя MIME в заголовках в 4-м параметре функции mail()
. Вы делаете это хорошо.
Отправитель enveloper
(тот, который вы можете отправить при отправке электронной почты через sendmail или совместимую с sendmail оболочку) с флагом -f
, устанавливается в параметре 5-й mail()
, additional_parameters
в том формате, который вы передавали бы ему в командной строке : -femail@address.tld
.
Таким образом, ваша почта будет выглядеть следующим образом:
mail($to, $subject, $body, $headers, "-fdomain@domain.com");
// ФОРМА СТРАНИЦЫ:
<form method="POST" action="mailer.php"> <p>Please feel free to contact me on the form below or my direct email address: jkench@jasonkench.co.uk<br> <br><br> <br> <br> <br> </p> <table width="327" border="0"> <tr> <td width="102">Name:</td> <td width="215"><input type="text" name="name" size="19"></td> </tr> <tr> <td>Company: <label for="company"></label></td> <td><input type="text" name="company"></td> </tr> <tr> <td>Email: </td> <td><input type="text" name="email" size="19"></td> </tr> <tr> <td>Telephone No: <label for="telephone"></label></td> <td><input type="text" name="telephone"></td> </tr> </table> <p><br> Enquiry:<br> <textarea rows="9" name="message" cols="65"></textarea> <br> <br> <input type="submit" value="Submit" name="submit"> </p> </form>
// PHP MAILER PAGE
<?php if(isset($_POST['submit'])) { //SEND TO // Send the completed form to the below email address: $to = "myemail@mydomain.co.uk"; //SUBJECT // Subject of the email form: $subject = "Jason Kench - Web Developer"; //NAME //POST the details entered into the name box $name = $_POST['name']; //COMPANY NAME // $company = $_POST['company']; //EMAIL // $email = $_POST['email']; //TELEPHONE NUMBER // $telephone = $_POST['telephone']; //MESSAGE/ENQUIRY $message = $_POST['message']; //Headers from a online site may help not sure $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //FROM EMAIL ADDRESS: // Additional headers to change the FROM EMAIL ADDRESS $headers .= 'From: Web-Contact-Form@mydomain.co.uk' . "\r\n"; // BODY // This is the body of the message that will be sent to my email address with their details. $body = " You have received a message from the online contact form at http://www.jasonkench.co.uk\n Details Below: \n \n From: $name\n Company: $company\n $headers Email Address: $email\n Telephone No: $telephone\n Message: $message\n"; // FORM SENT // This will alert the customer the form has been successfully sent. echo "Your details have been sent, I will contact you within 48 hours."; // Use the mail function to email the following variables to my $to email address. mail($to, $subject, $body, $headers); } else { // Display error message if there is a problem. echo "Sorry there seems to be a problem. Please email me direct at: $to thank you."; } ?>