Я обновлял несколько страниц, не связанных с PHP, для клиента, которые отправляют ввод формы в PHP. Однако без внесения каких-либо изменений в клиентский код, о котором сообщается, что он не получает электронные письма. Вместо этого он сказал, что он отправляет электронные письма только одному из писем, а не всем. Может ли какой-нибудь один вопрос указать, что не так с кодом?
$email_to = "info@example.com, user@live.ca, user@live.ca"; $email_subject = "VIP Access"." [".date("Ymd @ h:m:s A")."]"; $first_name = $_POST["objFirstName"]; $last_name = $_POST["objLastName"]; $phone = $_POST["objPhone"]; $email_from = $_POST["objEmail"]; $full_name = $first_name." ".$last_name; $message = ""; function clean_string($string) { $bad = array("content-type", "bcc:", "to:", "cc:", "href"); return str_replace($bad, "", $string); } $message .= "<html><body>\n"; $message .= "<table rules='all' border='1' style='border-color:#000;' cellpadding='10' width='100%'>\n"; $message .= "<tr style='background: #eee;'><td width='20%'><strong>Full Name:</strong> </td><td width='70%'>".clean_string($full_name)."</td></tr>\n"; $message .= "<tr style='background: #eee;'><td width='20%'><strong>Email:</strong> </td><td width='70%'>".clean_string($email_from)."</td></tr>\n"; $message .= "<tr style='background: #eee;'><td width='20%'><strong>Phone:</strong> </td><td width='70%'><a href='tel:".clean_string($phone)."'>".clean_string($phone)."</a></td></tr>\n"; $message .= "</table>\n"; $message .= "<img src='http://example.com/images/logo-trans.png' width='120' height='130' alt='Estate Brothers' style='text-align:center;'/>\n"; $message .= "</body></html>\n"; // create email headers $headers = "From: ".$email_from." via example.com\r\n"."Reply-To: ".$email_from."\r\n"."X-Mailer: PHP/".phpversion()."via example.com"; $headers .= 'To: Example <info@example.com>, User <user@live.ca>, User two <usertwo@live.ca>' . "\r\n"; $headers .= 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n"; $mail_feed = mail($email_to, $email_subject, $message, $headers);
Acquite swiftmailer здесь -> http://swiftmailer.org/
require_once 'swiftmailer/lib/swift_required.php'; function new_mail($subject, $content) { // Create the message $message = Swift_Message::newInstance(); // Give the message a subject $message->setSubject($subject); // Set the From address with an associative array $message->setFrom(array('sender@example.com' => 'Sender'))); // Set the To addresses with an associative array $message->setTo(array('info@example.com' => 'Example')); // Give it a body $message->setBody($content); $transport = Swift_MailTransport::newInstance(); $mailer = Swift_Mailer::newInstance($transport); $result = $mailer->send($message); } new_mail('Subject', $messagecontentgoeshere);
Если вы хотите, вы также можете заменить части TO и FROM на переменные. Таким образом, вы можете повторно использовать всю функцию на сайте.
Попробуйте следующее:
Удалите все пробелы в переменной email_to (я знаю, что пространства состояний RFC разрешены, но некоторые люди сталкиваются с проблемами и удаляют пробелы, исправляя их для них):
$email_to = 'info@example.com,user@live.ca,user@live.ca';
Убедитесь, что вы избегаете всей переменной $_POST
чтобы избежать инъекций.
Вы можете использовать TO, используя заголовки, а не использовать почту (обратите внимание на фиксацию конкатенации, как говорили другие ответы):
$email_to = "info@example.com"; .... $headers = "From: ".$email_from." via example.com\r\n"."Reply-To: ".$email_from."\r\n"."X-Mailer: PHP/".phpversion()."via example.com\r\n"; $headers .= 'To: user@live.ca, user@live.ca'."\r\n"; $headers .= 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
Другим решением было бы отправить электронное письмо несколько раз (убедитесь, что у вас есть другие исправления для заголовков, в том числе отсутствующих \ r \ n для x-mailer):
$email_to = array('info@example.com', 'user@live.ca', 'user@live.ca'); .... $mail_feed = true; foreach ($email_to as $email) { $mail_feed = $mail_feed && mail($email, $email_subject, $message, $headers); }