Мне нужно изменить календарь событий наших клубов, так как у нас проблемы с фильтром спама в gmail.
Я попытался изменить следующий код так, чтобы электронная почта отправителя теперь была «reply-to», а from — «[email protected]» в надежде, что использование электронной почты из нашего собственного домена решит спам проблема. Письмо не отправляется, и я получаю эту ошибку «Reply-To: отсутствует или искажена локальная часть (ожидаемое слово или»<«)»
Я пытался изменить ответ на электронную почту, но с теми же результатами. Я учу php по ходу дела, и ни один из этого кода не мой, я просто пытаюсь заставить его работать.
Вот код, который я изменил.
<?php
require('wordpress/wp-load.php');
get_header();
?>
<div id="container">
<div id="content" role="main">
<?php
include ("inc/functions.inc");
include ("inc/dbconnect.inc");
$db = db_connect();
$cookie = $_COOKIE[User];
$cookiearray = explode(",",$cookie);
if (isset($_POST['to'])){
$particode = $_POST['IDs'];
$participants = explode(",",$particode);
$search = "";
$numpar = count($participants)-1;
for ($i=0;$i<=$numpar;$i++){
if ($search == ""){
$search = "ID LIKE ".$participants[$i];
}else {
$search = $search." OR ID LIKE ".$participants[$i];
}
}
$result = mysql_query("SELECT Mail FROM users WHERE ".$search, $db);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$msg = $_POST['msg'];
$subject = $_POST['subject'];
$numpar = mysql_num_rows($result)-1;
for ($i=0;$i<=$numpar;$i++){
if ($i == 0){
$to = mysql_result($result,$i,'Mail');
}else {
$to = $to.", ".mysql_result($result,$i,'Mail');
}
}
$result = mysql_query("SELECT Mail FROM users WHERE ID LIKE ".$cookiearray[0], $db);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$replyto = mysql_result($result,0,'Mail');$from = '[email protected]';
$test = mail($to, $subject, $msg,'From: '.$from,'Reply-To: '.$replyto);if ($test){
Echo "<b>Mail sent</b>";
}else{
echo "<b>An error has occured trying to send your mail, sorry</b>";
}
}Else {
$particode = $_POST['participants'];
$participants = explode(",",$particode);
$search = "";
$numpar = count($participants)-1;
for ($i=0;$i<=$numpar;$i++){
if ($search == ""){
$search = "ID LIKE ".$participants[$i];
}else {
$search = $search." OR ID LIKE ".$participants[$i];
}
}
$result = mysql_query("SELECT Name FROM users WHERE ".$search, $db);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
Echo "<form name='mailform' action='eventmail.php' method='POST'>\n
<table border='0'>\n
<tr><td><b>To:</b></td><td><textarea rows='2' cols='45' name='to' readonly>";
for ($i=0;$i<=$numpar;$i++){
if ($i == 0){
echo mysql_result($result,$i,'Name');
}else {
echo "; ".mysql_result($result,$i,'Name');
}
}
Echo "</textarea><input type='hidden' name='IDs' value='".$particode."'></td></tr>\n
<tr><td valign='top'><b>Subject:</b></td><td><input type='text' name='subject' size='45'></td></tr>\n
<tr><td valign='top'><b>Message:</b></td><td><Textarea name='msg' rows='20' cols='45'></textarea></td></tr>\n
<tr><td colspan=2 valign='top'><input type='submit' value='Send mail'></td></tr></table>\n
</form>
";
}
?>
</div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Благодарю.
Попробуйте это с помощью этого заголовка может работать.
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=iso-8859-1";
$headers[] = "From: $brand_name <$from>";
$headers[] = "Bcc: Name <[email protected]>";
$headers[] = "Reply-To: Recipient Name <[email protected]>";
$headers[] = "Subject: {$subject}";
$headers[] = "Return-Path: <$from>";
$headers[] = "X-Priority: 3";//1 = High, 3 = Normal, 5 = Low
$headers[] = "X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, implode("\r\n", $headers));
Других решений пока нет …