html электронная почта для значения тега - PullRequest
0 голосов
/ 30 сентября 2011

Я отправляю html письмо клиенту через функцию php mail.Хотя знак & выделен жирным шрифтом, что создает проблемы при замене электронной почты!% 20 что-то вроде символов в моих идентификаторах, таких как ниже (жирным шрифтом).

http://test.com/test-page.php?id=abcd**!**1234&cat_id=23

Ниже мой код$ to = 'test@abc.com';

// subject
$subject = 'test';

//message
 $message.='<html><head><meta charset="UTF-8" /></head><body><p><a href="http://test.com/test-page.php?id=abcd1234&cat_id=23" target="_blank">Wine **&** Dine Offers</a></p></body></html>';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// Additional headers
$headers .= 'To: test <test@abc.com>' . "\r\n";
$headers .= 'From: test user <no-reply@test.com>' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers); 

После отправки почты я получаю!и% 20, как символы в электронной почте.Я также попробовал & кроме & в электронной почте, но бесполезно все еще!добавив в мою электронную почту HTML.

Ответы [ 4 ]

0 голосов
/ 03 октября 2011

Я изменил настройки кодирования в phpmailer, чтобы использовать кодировку base64, используя

$ mail-> Encoding = ” base64 "

Это решило мою проблему.

Поскольку существует проблема с почтовым сообщением HTML, длина которого превышает 998 или что-то подобное, я получил вышеуказанное решение.:)

http://www.jeremytunnell.com/posts/really-hairy-problem-with-seemingly-random-crlf-and-spaces-inserted-in-emails

0 голосов
/ 30 сентября 2011

Я думаю, вы должны закодировать URL-адрес в электронном письме. Кроме того, у вас есть вероятность, что magic_quotes_gpc "on" не рекомендуется.

Я всегда использую PHPMailer, он экономит много работы и помогает справиться с этими проблемами

0 голосов
/ 30 сентября 2011

попробуйте это:

$toName  = 'test'; 
$toAddress  = 'test@abc.com'; 

$fromName  = 'test user'; 
$fromAddress  = 'no-reply@test.com'; 

// subject
$subject = 'test';

// URL for link
// this should have any URL encoded characters literally in the string
$url = 'http://test.com/test-page.php?id=abcd1234&cat_id=23&msg=URL%20encode%20this%20string';

// HTML for message
// Call htmlspecialchars() on anything that may need it (like the URL)
$messageHTML = '<html><head><meta charset="UTF-8" /></head><body><p><a href="'.htmlspecialchars($url).'" target="_blank">Wine &amp; Dine Offers</a></p></body></html>';

// Text version of message
// Remember, not everyone has an HTML email client!
$messageText = "Wine & Dine Offers: $url";

// Build a multipart MIME message
$boundary = '------'.md5(microtime()).'------';
$body =
"This is a multipart message in MIME format.\r\n"
."$boundary\r\n"
."Content-Type: text/plain\r\n"
."\r\n"
."$messageText\r\n"
."$boundary\r\n"
."Content-Type: text/html; charset=UTF-8\r\n"
."\r\n"
."$messageHTML\r\n"
."--$boundary";

// To send HTML mail, the Content-type header must be set correctly
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";

// Additional headers 
// the To: header will be set by mail() and is not required here
$headers .= "From: $fromName <$fromAddress>\r\n";

// Mail it
mail("$toName <$toAddress>", $subject, $body, $headers); 
0 голосов
/ 30 сентября 2011

Попробуйте запустить urldecode() для входящих параметров.Пример:

$id = urldecode( $_GET['id'] );
...