2011-10-21 5 views
2

뭐가 잘못 됐는지 확신 할 수 없기 때문에 머리말을 잘못 지정했는지 확인했습니다. 제가 가지고있는 메일 스크립트는 거대합니다. 그래서이 작은 테스터를 집어 넣었습니다. 모든 html 태그가있는 전자 메일을 받았지만 형식이 지정되지 않았습니다. 머리글을 설정하는 방식에 문제가 있거나 내가 더 필요하면 궁금합니다. 포럼을 검색 한 결과 대부분의 사람들이 HTML 컨텐트 유형에 추가하지 않았지만 여기에 추가 된 문제가있는 것처럼 보였습니다. 따라서 도움이 정말 좋았을 것입니다.내 HTML 전자 메일이 HTML로 포맷되지 않습니다?

감사

좋아 내가 W3에 제안 된 형태와 몇 가지 다른 장소에 헤더를 업데이트 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'; 
} 
?> 

일부 자습서 온라인
http://www.webhostingtalk.com/showthread.php?t=416467
을 확인했습니다 있도록 . 나는 내 머리글이 문제라고 생각하고있다 ... 이것은 문제가 무엇인지 모르는 html이 아닌 일반 텍스트를 출력한다. 이 스크립트의 구조에 관해서는 실제 메일러 스크립트가 아니므로 테스트 세션 동안 조심해야 할 이메일이 얼마나 많은지 알기 때문에 카운터가있는 테스트 스크립트입니다.

+5

이를 : 더 좋은 솔루션은 뛰어난 라이브러리를 가지고의 추가는, 스팸 필터 등 스위프트와

예에 갇혀되지 않도록 메시지를 만드는 Postmarkapp 같은 것을 사용하는 것 HTML 전자 메일을 보내는 방법이 아닙니다. 완료 방법을 알아 보려면 스택 오버플로 또는 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

관련 문제