2013-06-03 92 views
3

我不能斯威夫特梅勒發送multipart/alternative的(我還沒有發現任何引用,所以也許我不能使用此功能),這是我的代碼:發送multipart/alternative的郵件與斯威夫特梅勒

$file[1]=html_entity_decode($file[1]); 
//Prepare plain/html body 
foreach($rep as $find => $sost) 
    $file[1]=str_replace($find,$sost,$file[1]); 
//Prepare plain/text body 
$plain=strip_tags(str_replace('&nbsp;',' ',str_replace('<br/>',"\n",$file[1]))); 
$boundary=uniqid('n_=_p'); 
//Prepare mail body     
$body = "--".$boundary."\r\n"; 
$body .= "Content-type: text/plain;\r\ncharset=utf-8\r\nContent-Transfer-Encoding: 7bit\r\n"; 
$body .= $plain; 
$body .= "\r\n--".$boundary."\r\n"; 
$body .= "Content-type: text/html;\r\ncharset=utf-8\r\nContent-Transfer-Encoding: 7bit\r\n"; 
$body .= "<html><body>".$file[1]."</body></html>"; 
$body .= "r\n--".$boundary ."--"; 
//Send Mail 
$message = Swift_Message::newInstance(); 
$message->setFrom(array($stmp[2]=>$stmp[1])); 
$message->setReplyTo(array($stmp[2]=>$stmp[1])); 
$message->setSubject($file[0]); 
$message->setContentType("multipart/alternative"); 
$message->setBody($body); 
$message->setTo($mail); 
$message->setBoundary($boundary); 

if($stmp[0]==0) 
    $transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -t'); 
else if($stmp[0]==1){ 
    if($stmp[5]==0) 
     $transport = Swift_SmtpTransport::newInstance($stmp[2],$stmp[4]); 
    else 
     $transport = Swift_SmtpTransport::newInstance($stmp[2],$stmp[4],'ssl'); 

    if($stmp[6]==1){ 
     $transport->setUsername($stmp[7]); 
     $transport->setPassword($stmp[8]); 
    } 
} 

$mailer = Swift_Mailer::newInstance($transport); 

if(!$mailer->send($message,$failure)) 
    file_put_contents('send_mail_Send_error',print_r($failure,true)); 

通常我會收到一個不可知的消息或名爲'noname'的附加文件。
有人可以幫助我嗎?由於

+2

你嚴重濫用swiftmailer。絕對不需要設置自己的標題。 ' - > setBody('html content here','text/html')'和' - > addPart('純文本替代這裏','text/plain');'。 –

+0

我還沒有理解' - > addPart'的用法,所以謝謝。對於垃圾郵件原因,最好將默認內容類型設置爲text/plain並在附加html部分之後?謝謝 – Razorphyn

+1

大多數人使用非html郵件程序的替代文本,所以html被剝奪的人仍然可以閱讀至少電子郵件的內容。至於垃圾郵件的目的,我不能肯定地說。我非常懷疑替代訴訟的相對地位。主體是相關的,但都涉及個人垃圾郵件過濾/評分系統。 –

回答

8

溶液(從馬克·B的評論):

$message = Swift_Message::newInstance(); 
$message->setFrom($stmp[2]) 
    ->setReplyTo($stmp[2]) 
    ->setSubject($file[0]) 
    ->setContentType("text/plain; charset=UTF-8") 
    ->setBody($plain,'text/plain')     
    ->addPart($file[1],'text/html');