2011-10-21 17 views
2

何が間違っているのかわからないので、ヘッダーを設定して何かが間違っている可能性があります。私が持っているmailscriptは巨大なので、この小さなテスターを組み立てました。すべてのhtmlタグが存在していてもフォーマットは行われていない電子メールが届きました。ヘッダーを設定する方法に問題があるのか​​、それとももっと必要があるのか​​不思議です。フォーラムを検索したところ、ほとんどの人がHTMLコンテンツタイプで追加していなかった問題が、ここに追加されているように見えたので、どんな助けも素晴らしいだろう。自分のHTMLメールがHTMLとしてフォーマットされていませんか?

おかげ

わかりましたので、私は、私はW3といくつかの他の場所での提案のフォームにヘッダを更新
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 = '[email protected]'; 
$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' . '\r\n'; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . '\r\n'; 
$mailheader .= 'from: [email protected] <[email protected]>' . '\r\n'; 

$yay = mail($to,$subject,$message,$mailheader); 

if($yay) 
{ 
    echo 'woot'; 
    $count++; 
    $_SESSION['new_count'] = $count; 
    echo '<br>Emails Sent: '.$count; 
} 
else 
{ 
    echo 'no woot'; 
} 
?> 

オンラインいくつかのチュートリアルをチェックアウトしました。私はヘッダーが問題であると推測しています...これは、問題が何であるかわからないhtmlではない通常のテキストを出力します。このスクリプトの構造については、私の実際のメーラスクリプトではありませんが、テストスクリプト中にカウンタがあるので、テストセッション中に何個の電子メールを見なければならないか分かります。

+5

これを:よりよい解決策は、優れたライブラリを持つの添加は、またスパムフィルターなどスウィフトと

例で立ち往生していないことを確認あなたのメッセージを作るPostmarkappのようなものを、使用することですHTML電子メールを送信する方法ではありません。どのようにして完了したのか調べるには、Stack OverflowやGoogleの検索を参照してください。 –

+0

Pekka、情報ありがとう。私はGoogleの検索を行い、私は質問をする前にStack Overflowの提案されたトピックのいくつかを調べました。私が見つけたものの大半は、ヘッダーを宣言するのが問題だったということでしたが、私の見出しはチュートリアルに従って投稿してください。 – Brodie

+0

「」、「」、および「」タグは使用していません。電子メールクライアントは厄介です。 – zzzzBov

答えて

5

\ r \ nには二重引用符を使用してください。

$mailheader = 'MIME-Version: 1.0' . "\r\n"; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . "\r\n"; 
$mailheader .= 'from: [email protected] <[email protected]>' . "\r\n"; 
+0

+1他のすべてのものが整然としているように見えるので、これはおそらく解決策です。 – Herbert

+0

これは解決策でした。戻り値と改行文字を二重引用符で囲まなければならないことはわかりませんでした。本当にありがとう。それが、通常のテキストメールを送信しようとしたときに改行文字が機能しない理由ですか? – Brodie

+0

はい、エスケープ文字は二重引用符で囲む必要があります。 –

0

"From"が "Content-type"の前にあることがわかります。さらに、 "MIME"ヘッダーは必要ありません。

1

Swiftを使用することをお勧めします。これは、PHPで電子メールを送信するのが非常に簡単です。

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('[email protected]' => 'John Doe')) 

    //Set the To addresses with an associative array 
    ->setTo(array('[email protected]', '[email protected]' => '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')) 
    ; 
+0

私は個人的なサイトにメーラアプリケーション/ライブラリを使って統合しようとしていますが、このクライアントサイトをやっている余分なものは望んでいませんでした。無料かどうか、理由はわかりません。 – Brodie

+0

@Brodie:それを聞いて申し訳ありません、[ここにあなたを元気づけるもの](http://clientsfromhell.net/):) – Znarkus

+0

それは恐ろしい '素晴らしいです – Brodie

関連する問題