2012-09-29 2 views
2

이메일을 읽고 TO 주소에 따라 다른 이메일 주소로 배포하는 스크립트를 작성 중입니다. 모든 이메일은 하나의 주소로 발송되지만 이메일을 전달하거나 새 이메일을 작성하고 관련 메일 본문을 모두 포함하는 방법을 알아낼 수 없습니다.PHP와 IMAP에서 다운로드 한 이메일을 전달하는 방법은 무엇입니까?

지금 IMAP를 사용하여 전자 메일을 다운로드하고 imap_fetchbody를 사용하여 전자 메일 내용을 가져옵니다.

$email_body = imap_fetchbody($imapconnex, $msgnumber, 1); 

일부 이메일 몸이 제대로 표시되지 않으며, 다른 사람들이 제대로 표시되지하는 내용을 일으키는 끝에 = 기호 짧은 라인을 포함한다. 또한 무작위로 A0이 내 이메일 본문에 인쇄되어 있습니다.

나의 계획은 PHP의 mail() 함수를 사용하여 내가 원하는 곳으로 전자 메일을 보내고 보낸 사람 주소를 실제 보낸 사람 주소로 변경하는 것이었다. 그게 내 필요를 위해 작동하지만 올바른 신체를 가져 와서 포맷하고 보내는 방법을 알아낼 수 없습니다.

는 여기에 이메일을 보내 사용하고 내 코드입니다 :

$header = imap_fetch_overview($imapconnex, $search[$i]); 
$email_subject = $header[0]->subject; 
$email_head = imap_fetchbody($imapconnex, $search[$i], 0); 
$email_body = imap_fetchbody($imapconnex, $search[$i], 1); 
mail("[email protected]", $email_subject, $email_body, $email_head); 

헤더가 잘 전달 될 것 같다,하지만 메시지의 본체는 여전히 =A0 기호로 표시됩니다.

+1

A0' 증상을 보입니다. 메일을 다시 보내는 경우 원본 메일에서 대부분의 헤더를 복사해야합니다. 전달하는 경우 새 메일의 MIME 본문 부분으로 모든 헤더를 그대로 유지 한 원본 메일을 포함해야합니다. – Celada

+0

도움을 주셔서 감사합니다. 그것은 content-transfer-encoding에 대해 흥미 롭습니다. –

+0

제 코드의 헤더를 수정했습니다 (Celada 감사합니다). 여전히'='와'A0'을 표시하는 바디에 문제가 있습니다. 나는 내 코드를 사용하여 원래 헤더에'Content-Transfer-Encoding '을 얻지 못하고 있다는 것을 알아 차렸다. –

답변

0

오늘 대부분 메시지는 멀티 파트입니다. 나는이 작품과 그 작품을 사용한다.

$mailstructure = imap_fetchstructure($inbox, $uid, FT_UID); // 
$type = $mailstructure->type; 
if ($type == 1 && $mailstructure->ifparameters == 1) { 
    $subtype = strtolower($mailstructure->subtype); 
    echo "SubType is" . $subtype . "<br />"; 
    $parameters = $mailstructure->parameters; 
    $attribute = $parameters[0]->attribute; 
    $value = $parameters[0]->value; 
    echo $attribute . "//" . $value . "<br />"; 
    # prepare the mail 
$to=""; 
$subject=""; 
    $body="\r\nThis is a multipart message in MIME format.\r\n"; 
    $body.=imap_body($inbox, $uid, FT_UID); 
    $headers ="From:" . $from . "\r\n"; 
    $headers .="Date: " . date("r") . "\r\n"; 
    $headers .="MIME-Version: 1.0\r\n"; 
    $headers .="Content-Type: multipart/" . $subtype . "; 
     \t boundary=\"" . $value . "\""."\r\n"; 
    $sendmail = imap_mail($to, $subject, $body, $headers); 

}

당신은`원인이되는`, 당신은 헤더를 누락하지만 새 메일로 콘텐츠 전송-Encoding`을 원래 메일 본문을 복사은`=`하고있다처럼 소리
관련 문제