blmg2009 Posted September 29, 2014 Share Posted September 29, 2014 Hi there, I'm a bit of a noobie, and I have a class which will allow me to send an email in html. However when I send an email with a link such as <a href="http://www.google.com">link</a> using the html() function The email is sent and everything is displayed corrected. However the link isn't clickable. Here is the code for the class. <? class eMail { var $to = array(); var $cc = array(); var $bcc = array(); var $attachment = array(); var $boundary = ""; var $header = ""; var $subject = ""; var $body = ""; function eMail($name,$mail) { $this->boundary = md5(uniqid(time())); $this->header .= "From: $name <$mail>\n"; } function to($mail) { $this->to[] = $mail; } function cc($mail) { $this->cc[] = $mail; } function bcc($mail) { $this->bcc[] = $mail; } function attachment($file) { $this->attachment[] = $file; } function subject($subject) { $this->subject = $subject; } function text($text) { $this->body = "Content-Type: text/plain; charset=ISO-8859-1\n"; $this->body .= "Content-Transfer-Encoding: 8bit\n\n"; $this->body .= $text."\n"; } function html($html) { $this->body = "Content-Type: text/html; charset=ISO-8859-1\n"; $this->body .= "Content-Transfer-Encoding: quoted-printable\n\n"; $this->body .= "<html><body>\n".$html."\n</body></html>\n"; } function send() { // CC $max = count($this->cc); if($max>0) { $this->header .= "Cc: ".$this->cc[0]; for($i=1;$i<$max;$i++) { $this->header .= ", ".$this->cc[$i]; } $this->header .= "\n"; } // BCC $max = count($this->bcc); if($max>0) { $this->header .= "Bcc: ".$this->bcc[0]; for($i=1;$i<$max;$i++) { $this->header .= ", ".$this->bcc[$i]; } $this->header .= "\n"; } $this->header .= "MIME-Version: 1.0\n"; $this->header .= "Content-Type: multipart/mixed; boundary=$this->boundary\n\n"; $this->header .= "This is a multi-part message in MIME format\n"; $this->header .= "--$this->boundary\n"; $this->header .= $this->body; // Attachment $max = count($this->attachment); if($max>0) { for($i=0;$i<$max;$i++) { $file = fread(fopen($this->attachment[$i], "r"), filesize($this->attachment[$i])); $this->header .= "--".$this->boundary."\n"; $this->header .= "Content-Type: application/x-zip-compressed; name=".$this->attachment[$i]."\n"; $this->header .= "Content-Transfer-Encoding: base64\n"; $this->header .= "Content-Disposition: attachment; filename=".$this->attachment[$i]."\n\n"; $this->header .= chunk_split(base64_encode($file))."\n"; $file = ""; } } $this->header .= "--".$this->boundary."--\n\n"; foreach($this->to as $mail) { mail($mail,$this->subject,"",$this->header); } } } ?> Link to comment https://forums.phpfreaks.com/topic/291349-html-email-not-correctly-displaying-links/ Share on other sites More sharing options...
ginerjm Posted September 29, 2014 Share Posted September 29, 2014 Just guessing but here goes. Is the email sent with the proper headers for 'html email'? Does the mail client handle html emails? Link to comment https://forums.phpfreaks.com/topic/291349-html-email-not-correctly-displaying-links/#findComment-1492398 Share on other sites More sharing options...
Psycho Posted September 29, 2014 Share Posted September 29, 2014 Also, some email clients will disable links based on various rules - typically to prevent the user from clicking malicious links. Have you tried reading the email is different email clients? Link to comment https://forums.phpfreaks.com/topic/291349-html-email-not-correctly-displaying-links/#findComment-1492399 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.