简体   繁体   中英

Email being sent as HTML

I have a php app that triggers an email.. Right now the recipient is getting the email with all of the HTML printed out in one blob of text.. Cant seem to find the error here, any ideas?

$user_info = get_userdata($venderid);

$shoperMail = $user_info->user_email;
$shoperName = $user_info->display_name;

$to      = $shoperMail.", info@orders.com";
$subject = "Sales Order from website";

$message  = '';
$message  = "Hi $shoperName,<br><br>";
$message .= "A Gift has been redeemed for your services.<br><br>";
$message .= "Customer: $currentuserName<br><br>";
$message .= "Redemption Amount: $$redempt<br><br>";
$message .= "Customer code:$confirmationCode<br><br>";
$message .= "To access their contact & order information, simply log in to your account & select: Gift Cards > Vendor Orders.<br><br>";
$message .= "*Once you have provided the customer with your company's voucher, certificate or online coupon code, please 'Approve' their purchase.<br><br>";
$message .= "Log in: <a href='".$url."/login/'>http://test.com</a><br><br>";
$message .= "If you have any questions, please don't hesitate to contact me.<br><br>";
$message .= "Test test<br>order Gift Cards<br><i>doing cool stuff.</i><br><br>toll free: 866.test x.tes x 9<br><a href='http://www.test.com/'>Test.com</a>,<br><a href='http://www.facebook.com/test/'>facebook.com/test</a><br><a href='http://twitter.com/test/'>twitter.com/test</a><br><br><br>" ;
$message .= "**The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, re-transmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this email in error, please contact the sender immediately by return electronic transmission and then immediately delete this transmission, including all attachments, without copying, distributing or disclosing same. ";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "To: ".$shoperMail."\r\n";
$headers .= "From: orders@prders.com\r\n";

mail($to,$subject,$message,$headers);

You need to set the HTML content type, example from the Codex :

add_filter( 'wp_mail_content_type', 'my_set_html_content_type' );
wp_mail( 'me@example.net', 'The subject', '<p>The <em>HTML</em> message</p>' );
remove_filter( 'wp_mail_content_type', 'my_set_html_content_type' ); // reset content-type

Filter callback:

function my_set_html_content_type()
{
    return 'text/html';
}

I've embedded your code in the same html-mail-markup that I usually use.

Give this a try:

// Getting info    
$user_info = get_userdata($venderid);
$shoperMail = $user_info->user_email;
$shoperName = $user_info->display_name;
$to = $shoperMail.", info@orders.com";

// HTML
$message  = '';
$message  = "Hi $shoperName,<br><br>";
$message .= "A Gift has been redeemed for your services.<br><br>";
$message .= "Customer: $currentuserName<br><br>";
$message .= "Redemption Amount: $$redempt<br><br>";
$message .= "Customer code:$confirmationCode<br><br>";
$message .= "To access their contact & order information, simply log in to your account & select: Gift Cards > Vendor Orders.<br><br>";
$message .= "*Once you have provided the customer with your company's voucher, certificate or online coupon code, please 'Approve' their purchase.<br><br>";
$message .= "Log in: <a href='".$url."/login/'>http://test.com</a><br><br>";
$message .= "If you have any questions, please don't hesitate to contact me.<br><br>";
$message .= "Test test<br>order Gift Cards<br><i>doing cool stuff.</i><br><br>toll free: 866.test x.tes x 9<br><a href='http://www.test.com/'>Test.com</a>,<br><a href='http://www.facebook.com/test/'>facebook.com/test</a><br><a href='http://twitter.com/test/'>twitter.com/test</a><br><br><br>" ;
$message .= "**The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, re-transmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this email in error, please contact the sender immediately by return electronic transmission and then immediately delete this transmission, including all attachments, without copying, distributing or disclosing same. ";

// Subject
$subject = "Sales Order from website";

// Header 
$innerboundary ="=_".time()."_=";
$header ="MIME-Version: 1.0\n"; 
$header.="To: ".$to."\n"; 
$header.="From: orders@prders.com\n";
$header.="Reply-To: orders@prders.com\n";
$header.="X-Mailer: kmPHP-Mailer\n"; 
$header.="Content-Type: multipart/alternative;\n\tboundary=\"".$innerboundary."\"\n";

// Body
$body.="\n--".$innerboundary."\n"; 
$body.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n"; 
$body.="Content-Transfer-Encoding: base64\n\n"; 
$body.=chunk_split(base64_encode(($message)))."\n\n"; 
$body.="\n--".$innerboundary."--\n"; 
$body.="\n\n"; 

// Send
mail($shoperMail,$subject,$body,$header);

To reiterate Marc B comment above

don't build mime emails by hand. use phpmailer or swiftmailer . they automate it all for you, and all you have to do is provide the html.

Doing this will make it much easier for you to solve your problem by doing it in a differnt way.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM