Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to send html mails using PEAR mail

Tags:

php

email

pear

I am using PEAR mail system to send authenticated mails.I need to send HTML mails that has alinks.It was working fine before i started using PEAR mail.Now i am not able to send HTML mails.

mail body looks like this:

$body = <<<EOD

Hiya $username

You might be interested in the current 'haves' and 'wants' on example.com

Latest Haves
<a href="http://www.exmaple.com/product/have/64/Titan+Fast+Track+SunGlass">Titan Fast Track SunGlass</a>

EOD;

a tag appears as it is in the mail.Any idea how to solve this??Pls help..

like image 874
Sakura Avatar asked Sep 01 '09 10:09

Sakura


3 Answers

If you follow this example there's no reason it shouldn't work:

<?php include('Mail.php'); include('Mail/mime.php');  // Constructing the email $sender = "Leigh <leigh@no_spam.net>";// Your name and email address $recipient = "Leigh <leigh@no_spam.net>"; // The Recipients name and email address $subject = "Test Email";// Subject for the email $text = 'This is a text message.';// Text version of the email $html = '<html><body><p>HTML message</p></body></html>';// HTML version of the email $crlf = "\r\n"; $headers = array('From' => $sender, 'Return-Path' => $sender, 'Subject' => $subject);  // Creating the Mime message $mime = new Mail_mime($crlf);  // Setting the body of the email $mime->setTXTBody($text); $mime->setHTMLBody($html);  $body = $mime->get(); $headers = $mime->headers($headers);  // Sending the email $mail =& Mail::factory('mail'); $mail->send($recipient, $headers, $body); ?> 

NOTE: in order for the above example to work one needs the Pear Mail Mime Package in addition the Pear Mail one. You can get the package here https://pear.php.net/package/Mail_Mime/download.

like image 129
karim79 Avatar answered Oct 18 '22 14:10

karim79


What do your headers look like? Here are mine:

$headers = array(
    'To' => $recipients,
    'From' => $adminEmail,
    'Subject' => $subject,
    'MIME-Version' => 1,
    'Content-type' => 'text/html;charset=iso-8859-1'
);
like image 22
story Avatar answered Oct 18 '22 15:10

story


Please note that the example posted by karim79 has a header parameter that may cause you much grief: "Return-Path" - when I included this parameter like the example it prevented me from adding a from name, only a sender email address worked.

Specifically (when I added a debug param to see what was happening) there were extra angle brackets added around the from name so it tried to send this to the smtp server:

From: <from name <[email protected]>> or
From: <"from name" <[email protected]>> when I tried using quotes.
This caused the smtp connection to quit with an error of invalid address.

Also when using the mime_mail class you need to specify the "To:" parameter in the headers or it will appear to be sent to undisclosed addresses when you receive it. So replace the Return-Path param with a To param and it will work.

like image 24
Robert Avatar answered Oct 18 '22 15:10

Robert