2012-09-10 3 views
2

PHP 스크립트에서 SwiftMailer을 사용하여 전자 메일을 보내고 메시지 본문을 작성하고 서식을 지정하는 텍스트 편집기로 TinyMCE을 사용합니다. 문제는 내가 모든 이메일 클라이언트 (Gmail, 야후 및 핫메일)에 형식을 지정하지 않고도 메시지를 보낼 때 심지어 링크가 링크로 나타나지 않는 경우 일반 텍스트로 표시되지만 파란색으로 표시된다는 것입니다. 그래서 문제가 무엇입니까? $_POST['message'] 내가 TinyMCE에를 사용하여 작성하고 포맷 한 메시지의 본문을 보유하고 있음을TinyMCE를 사용하여 형식을 지정하고 SwiftMailer를 사용하여 보낸 전자 메일에 텍스트 서식이 표시되지 않습니다.

<?php 

require_once 'path/to/SwiftMailer/lib/swift_required.php'; 

$transport = Swift_MailTransport::newInstance(); 
# Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 
# Create the message 
$msg = Swift_Message::newInstance(); 
# Give the message a subject 
$msg->setSubject($_POST['subject']); 
# Set the From address with an associative array 
$msg->setFrom(array($_POST['sender_email'] => $_POST['sender_name'])); 
# Give it a body 
$msg->setBody($_POST['message'], 'text/html'); 

$failedRecipients = array(); 
$numSent = 0; 
$to = array(
    '[email protected]', 
    '[email protected]' => 'Recipient 2', 
    '[email protected]', 
    '[email protected]' => 'Recipient 4', 
    '[email protected]' 
); 

foreach ($to as $address => $name) { 
    if (is_int($address)) { 
     $msg->setTo($name); 
    } else { 
     $msg->setTo(array($address => $name)); 
    } 

    $numSent += $mailer->send($msg, $failedRecipients); 
} 

echo $numSent > 0 ? 'SUCCESS' : 'FAILURE'; 

?> 

참고 : 여기에

내가 이메일을 보낼 때 사용하는 코드입니다.

답변

2

내가 알아낼 때까지 많은 것을 시도했지만 문제는 형식화 된 메시지 본문의 특수 문자가 이스케이프되고 있다는 것입니다. 백 슬래시가 각 특수 문자 앞에 추가되었습니다. 이유를 모르겠습니다. , 나는 이것을 한 TinyMCE 또는 SwiftMailer 중 누구인지 모른다. 그래서 내가해야 할 일은 SwiftMailer를 통해 메시지를 보내기 전에 메시지 본문에서 슬래시를 제거하는 것입니다. 나는 내 메시지를 보낼 때 사용하는 코드를 게시 한

$msg->setBody(stripslashes($_POST['message']), 'text/html'); 
0

전에 Swiftmailer를 사용하지 않았지만 전송하기 전에 내용에서 HTML 태그를 제거 (이스케이프 처리하지 않음)하는 것처럼 보입니다. 자신이 수행하고있는 일이나 신속한 메일러 자체가 수행하는 것처럼 코드를 게시 할 수 있습니까?

swiftmailer에 대한 간략한 설명으로 html 메시지를 지원하는 것처럼 보이므로 올바른 MIME 유형을 사용하지 않을 수도 있습니다.

+0

및 SwiftMailer는 전송하기 전에 HTML 태그를 제거하지 않습니다

$msg->setBody($_POST['message'], 'text/html'); 

가 될 : 난 그냥이 라인을 변경할 필요가있다 . – Amr

0

문제는 귀하의 html 전자 메일에 tinymce 편집기에서 사용할 수있는 스타일 시트가 없다는 것입니다. 동일한 스타일 시트가 전자 메일 컨텐츠에 적용되는지 확인하십시오.