Witam.

Już pół dnia się zastanawiam i nie potrafię znaleźć rozwiązania.


  1. $tr = new Zend_Mail_Transport_Smtp($this->config->mail->host, $this->config->mail->config->toArray());
  2. $mail = new Zend_Mail('UTF-8');
  3. $mail->setBodyText($this->translate->_('Buyer:').' '.$this->cart->agentdata['name']."<br />".$this->translate->_('Agent number').': '.$this->cart->agentdata['number'].PHP_EOL);
  4. $mail->setBodyText($mail->getBodyText(true).'<table><tr><th>'.$this->translate->_('Product').'</th><th>'.$this->translate->_('Amount').'</th><th>'.$this->translate->_('Points for each')."</th><th>".$this->translate->_('Price for each').'</th><th>'.$this->translate->_('Total points').'</th><th>'.$this->translate->_('Total price').'</th></tr>','UTF-8');
  5. $mail->addTo($this->config->mail->to);
  6. $mail->setSubject($this->translate->_('New order:').' '.$orderid);
  7.  
  8. $productslist = $this->db->fetchAll("SELECT * FROM `orderedproducts` RIGHT JOIN `products` USING (productid) WHERE orderid=$orderid");
  9. foreach($productslist as $product)
  10. {
  11. $mail->setBodyText($mail->getBodyText(true).'<tr><td><a href="/products/category/id/'.$product['categoryid'].'/product/'.$product['productid'].'/">'.$product['product']."</a></td>\n<td>".$product['amount'].'</td><td>'.$product['points']."</td>\n<td>".number_format($product['price'],2,'.','').' &euro;</td><td>'.$product['points']*$product['amount']."</td>\n<td>".number_format($product['price']*$product['amount'],2,'.','').' &euro;</td></tr>'."\n",'UTF-8');
  12. }
  13. $mail->setBodyText($mail->getBodyText(true).'</table>');
  14. $mail->send($tr);

W wyniku tego kodu dostaję maila o takiej treści:

Cytat
Nabywca: fbnjgkhk<br />Numer przedstawiciela: 656575=3D3D0A<table><tr><t=
h>=3D=0AProdukt</th><th>Ilosc</th><th>Punkty za jeden</th><th>Cena za je=
den</th>=3D=0A<th>Suma punktow</th><th>Calkowita cena</th></tr><tr><td><=
a href=3D"/products/category/id/1/product/1/">Cem-Tech</a></td>=0A<td>1<=
/td><td>0</td>=0A<td>45.00 &euro;</td><td>0</td>=0A<td>45.00 &euro;</td>=
</tr>=0A</table>

W miejscu gdzie miał być EOL wstawiło mi "=3D3D0A"
a jak używam \n to wstawia "=0A"
A jak dzieli tekst na linie po 76 znaków to na koniec dodaje =
No i nie wiem dlaczego gdzieniegdzie dodało inne znaki.
Zamieniało również polskie znaki to na razie zamieniłem je na litery bez języczków ale prawdopodobnie zamienia je z tego samego powodu.

PS: wiem że aby wysyłać maila HTML mam używać setBodyHtml i getBodyHtml używam tekst aby mi nie ukrywało znaczników i widzieć gdzie dokładnie mi wciska te napisy. Bo jako HTML jest to samo.