#php #html #email #header
#php #HTML #Адрес электронной почты #заголовок
Вопрос:
Не уверен, что не так, я убедился, что установил свои заголовки, поэтому, возможно, что-то не так. Mailscript, который у меня есть, огромен, поэтому я собрал этот маленький тестер, когда я получаю электронные письма, все теги html присутствуют, но форматирование не происходит. Мне любопытно, связано ли это с тем, как я настроил заголовок, или мне нужно было больше. Я искал на форумах, и, похоже, проблема, с которой сталкивалось большинство людей, заключалась в том, что они не добавляли тип содержимого HTML, но он добавлен здесь, поэтому любая помощь была бы потрясающей.
Спасибо
Хорошо, я просмотрел несколько учебных пособий в Интернете
http://www.webhostingtalk.com/showthread.php?t=416467
http://css-tricks.com/2866-sending-nice-html-email-with-php
http://www.w3schools.com/php/func_mail_mail.asp
<?php
session_start();
if (isset($_SESSION['new_count'])) //counts how many fake emails i send myself
{
$count = $_SESSION['new_count'];
}
else
{
//first time
$count = 0;
}
$to = 'myemail@gmail.com';
$subject = 'email test';
$message = '<html><head></head><body>';
$message .= '<h1>this is an email test</h1>';
$message .= '<br />does new line work?<br />';
$message .= 'how about <b>bold</b> and <strong>strong</strong>?<br />';
$message .= '</body></html>';
//updated my header to include mime-version
$mailheader = 'MIME-Version: 1.0' . 'rn';
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . 'rn';
$mailheader .= 'from: abc@def.com <btyazaki@gmail.com>' . 'rn';
$yay = mail($to,$subject,$message,$mailheader);
if($yay)
{
echo 'woot';
$count ;
$_SESSION['new_count'] = $count;
echo '<br>Emails Sent: '.$count;
}
else
{
echo 'no woot';
}
?>
Я обновил заголовки до предложенных форм на W3 и в нескольких других местах. Я предполагаю, что проблема в моих заголовках … это по-прежнему выводит обычный текст, а не html, не уверен, в чем проблема. Что касается структуры этого скрипта, то это не мой настоящий скрипт почтовой программы, это тестовый скрипт со счетчиком, поэтому я знаю, сколько электронных писем нужно искать во время тестового сеанса.
Комментарии:
1. Это не способ отправки электронной почты в формате HTML. Обратитесь к поиску Stack Overflow или Google, чтобы узнать, как это делается
2. Пекка, спасибо за информацию. Я сделал поиск в Google и изучил некоторые из предложенных тем Stack Overflow, прежде чем задавать свой вопрос. Большая часть того, что я обнаружил, заключалась в том, что это были проблемы с объявлением заголовка, но мой заголовок выглядит так, как и должно быть в соответствии с учебными пособиями, которые я опубликовал, любопытно, что портит электронное письмо.
3. Для начала вы не используете
<html>
теги ,<head>
, и<body>
. Почтовые клиенты придирчивы.4. о, мой обновленный скрипт имеет теги <html> <head> и <body> …
5. Если вы хотите использовать escape-символы, такие как
rn
then, вы должны использовать строки в PHP, заключенные в двойные кавычки.
Ответ №1:
Попробуйте использовать двойные кавычки для вашего rn .
$mailheader = 'MIME-Version: 1.0' . "rn";
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . "rn";
$mailheader .= 'from: abc@def.com <btyazaki@gmail.com>' . "rn";
Комментарии:
1. 1 Это более чем вероятное решение, поскольку все остальное, похоже, в порядке.
2. это было решение, я не понимал, что мне нужно было заключать в двойные кавычки символы возврата и перевода строки. Большое спасибо. Может ли это быть причиной того, что мои символы новой строки не работают, когда я пытаюсь отправить обычное текстовое электронное письмо?
3. Да, любые escape-символы должны быть заключены в двойные кавычки.
Ответ №2:
Я предлагаю вам использовать Swift, который упрощает отправку электронной почты на PHP. Еще лучшим решением было бы использовать что-то вроде Postmarkapp, которое, помимо наличия отличных библиотек, также гарантирует, что ваши сообщения не застрянут в спам-фильтрах и т. Д.
Пример с Swift:
require_once 'lib/swift_required.php';
//Create the message
$message = Swift_Message::newInstance()
//Give the message a subject
->setSubject('Your subject')
//Set the From address with an associative array
->setFrom(array('john@doe.com' => 'John Doe'))
//Set the To addresses with an associative array
->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
//Give it a body
->setBody('Here is the message itself')
//And optionally an alternative body
->addPart('<q>Here is the message itself</q>', 'text/html')
//Optionally add any attachments
->attach(Swift_Attachment::fromPath('my-document.pdf'))
;
Комментарии:
1. Я ценю это, я, вероятно, собираюсь интегрировать использование почтового приложения / библиотеки на свой личный сайт, но я не хотел, чтобы на этом клиентском сайте была куча лишних вещей, он очень беспокоится об использовании внешнего скрипта, бесплатного или нет, не знаю почему.
2. @Brodie: Жаль это слышать, вот кое-что, чтобы подбодрить вас 🙂
Ответ №3:
Насколько я вижу, «From» должно быть перед «Content-type». Кроме того, вам не нужен заголовок «MIME».