На сайте местной футбольной команды (введите описание ссылки здесь который размещен на One.com, я запрограммировал ставки на футбол на 8 матчей каждого игрового дня (8 матчей).
Когда пользователь заполнил форму и отправил ее, он получает письмо со своими ставками, а веб-мастер получает копию в виде СК. Почта отправляется из основного почтового ящика домена doskobeveren.be: [email protected] на почтовый адрес пользователя.
С сезона 2013-2014 и первых 28 недель сезона 2014-2015 сценарий всегда работал нормально (= 58 недель).
Но с прошлой недели часть сценария, содержащая скрытую копию, дает для каждой почты сообщение «Недоставленная почта, возвращаемая отправителю» в основном почтовом ящике ([email protected]) вместо почтового ящика веб-мастера.
Эта почта говорит:
Отчетность-МТА: днс; mail-out2.one.com
X-Postfix-Queue-ID: 9ABF0552A2
X-Postfix-Sender: rfc822; [email protected]
Дата прибытия: ср., 15 апреля 2015 г. 17:36:16 +0200 (CEST)
Конечный получатель: rfc822; [email protected]
Оригинал-Получатель: rfc822; [email protected]
Действие: не удалось
Статус: 5.7.1
Remote-MTA: днс; mxcluster2.one.com
Диагностический код: smtp; 550 5.7.1 Заблокирован почтовым фильтром
Поддержка One.com говорит мне, что это следующие причины:
Поскольку почта создается веб-страницей, мне интересно, вдруг ли PHP-сценарий вызвал, по какой-либо причине, после 58 недель хорошей работы, внезапно проблему?
PHP приходит из: введите описание ссылки здесь
enter code here
<h3>Dit bericht zal u per mail ontvangen:</h3>
<?php
$pronomail ='';
$pronomail = $_SESSION['username']. ", u heeft de volgende pronostiek ingestuurd voor speeldag " .$speeldag. "\n\n";
for($i=1; $i<=8; $i++){
$pronomail .= "wedstrijd " .$i. ": " .$wedstrijd[$i]. " = ";
switch ($i) {
case 1:
$pronomail .= "Prono1: " .$k1w1. " - Prono2: " .$k2w1. " - Prono3: " .$k3w1. "\n\n";
break;
case 2:
$pronomail .= "Prono1: " .$k1w2. " - Prono2: " .$k2w2. " - Prono3: " .$k3w2. "\n\n";
break;
case 3:
$pronomail .= "Prono1: " .$k1w3. " - Prono2: " .$k2w3. " - Prono3: " .$k3w3. "\n\n";
break;
case 4:
$pronomail .= "Prono1: " .$k1w4. " - Prono2: " .$k2w4. " - Prono3: " .$k3w4. "\n\n";
break;
case 5:
$pronomail .= "Prono1: " .$k1w5. " - Prono2: " .$k2w5. " - Prono3: " .$k3w5. "\n\n";
break;
case 6:
$pronomail .= "Prono1: " .$k1w6. " - Prono2: " .$k2w6. " - Prono3: " .$k3w6. "\n\n";
break;
case 7:
$pronomail .= "Prono1: " .$k1w7. " - Prono2: " .$k2w7. " - Prono3: " .$k3w7. "\n\n";
break;
case 8:
$pronomail .= "Prono1: " .$k1w8. " - Prono2: " .$k2w8. " - Prono3: " .$k3w8. "\n\n";
break;
}
}
$pronomail .= " Veel succes! \n\n";
$bericht =str_replace("\n","<br />",$pronomail);
echo $bericht. "<br />";
//define the receiver of the email
$to = $_SESSION['email'];
//define the subject of the email
$subject = 'Pronostiek';
//define the message to be sent. Each line should be separated with \n
$message = $pronomail;
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: [email protected]\r\nBcc: [email protected]\r\n";
$headers .= "Message-ID: <" . md5(uniqid(time())) . $_SERVER['SERVER_NAME']. ">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Date: ".date("D, d M Y H:i:s") . "\r\n";
//$headers .= "Reply-To: [email protected]\r\n";
$headers .= "X-Priority: 3\r\nX-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: PHP/".phpversion()."\r\n";
$headers .= "X-MimeOLE: Produced By MyDomain\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
//$headers .= "Date: .date('r', $_SERVER['REQUEST_TIME'])\r\n";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"echo $mail_sent ? "Mail is verstuurd" : "Mail kon niet verstuurd worden";
?>
==========
Кто-нибудь может дать мне решение, пожалуйста? Благодарю.
Поля заголовка являются необязательными и действительно необходимы, только если вы хотите настроить их. Закомментируйте строку, генерирующую Message-ID, и она, вероятно, пройдет систему фильтрации почтового сервера, поскольку сама сгенерирует действительный Message-ID.
Я бы посоветовал PHPMailer. Это просто и легко реализовать.
<?php
require 'PHPMailerAutoload.php'; // you need to download the `PHPMailer` library and add that file path here. It changes where you place.
if(isset($_POST['submit'])
{
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->From = $_POST['fromAddress'];
$mail->FromName = $_POST['fromName'];
$mail->addAddress($_POST['toAddress']); // Name is optional
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $_POST['subject'];
$mail->Body = $_POST['message'];
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
?><html>
<body>
<form method="post" action="">
From address : <input type="email" name="fromAddress" /><br/>
From Name : <input type="text" name="fromName" /><br/>
To address : <input type="email" name="toAddress" /><br/>
Subject : <input type="text" name="subject" /><br/>
Message : <input type="text" name="message" /><br/>
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Я сделал 1 изменение в своем php-коде:
Инстаед из:
$headers = "From: [email protected]\r\nBcc: [email protected]\r\n";
Я изменил это на:
$headers = "From: [email protected]\r\nBcc: [email protected]\r\n";
Почтовый ящик: [email protected] является одним из моих других почтовых адресов.
И теперь это снова сработало; в почтовый ящик не поступило сообщение «Недоставленная почта возвращена отправителю»: [email protected].
Поэтому я думаю, что что-то изменилось на почтовом (ых) сервере (ах) One.com, который заблокировал отправку скрытой копии между 2 почтовыми ящиками одного и того же домена ????
Я внес изменения, предложенные Эндрю Кейсом, закомментировал строку, генерирующую Message-ID, и изменил обратно Bcc на [email protected], и он снова работает.