ChosenJuan
ChosenJuan

Reputation: 961

How can I add a .png to an outgoing PHP Email with HTML?

I've been trying to add a png to my php email for quite sometime with no luck. I tried the traditional methods and I've tried to add Base64 to both html and css using this site http://www.base64-image.de

But no matter what I do I get a blank header. Can anyone please tell me, step by step what I have to do to make a png appear on the email I send, and no it can't be an attachment. Thanks in advanced.

 <?php

// $email and $message are the data that is being
// posted to this page from our html contact form
$email = $_REQUEST['email'] ;

$mail2 = new PHPMailer();

// set mailer to use SMTP
$mail2->IsSMTP();

// As this email.php script lives on the same server as our email server
// we are setting the HOST to localhost
$mail2->Host = "smtp.comcast.net"; // specify main and backup server

$mail2->SMTPAuth = true; // turn on SMTP authentication

// When sending email using PHPMailer, you need to send from a valid email address
// In this case, we setup a test email account with the following credentials:
// email: [email protected]
// pass: password
$mail2->Username = "[email protected]"; // SMTP username
$mail2->Password = "*******"; // SMTP password
$mail2->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail2->Port = 465;                                    // TCP port to connect to


// $email is the user's email address the specified
// on our contact us page. We set this variable at
// the top of this page with:
// $email = $_REQUEST['email'] ;
//$mail2->From = '[email protected]';


//Set who the message is to be sent from
$mail2->setFrom('[email protected]', 'user');


// below we want to set the email address we will be sending our email to.
$mail2->AddAddress("$email");

//Set an alternative reply-to address
$mail2->addReplyTo('[email protected]');


// below we want to set the email address we will be sending our email to.
//$mail2->AddAddress("$email");

// set word wrap to 50 characters
$mail2->WordWrap = 50;
// set email format to HTML
$mail2->IsHTML(true);

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

$mail2->Subject = "Thanks";


$headers = "From: " . strip_tags($_POST['[email protected]']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['[email protected]']) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


$message = '<html><body>';

$message .= '<div style="height:130px; text-align:center; width:100%; background:#666;"> <img src="images/logo.png"/></div>';

$message .= '<p>Welcome,</p> ';
$message .= "<p>You have been added</p>";


$message .= "</body></html>";

// $message is the user's message they typed in
// on our contact us page. We set this variable at
// the top of this page with:
// $message = $_REQUEST['message'] ;
$mail2->Body = $message;
$mail2->AltBody = $message;

if(!$mail2->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail2->ErrorInfo;
exit;
}

echo "Message has been sent";

?>

Upvotes: 0

Views: 497

Answers (1)

Synchro
Synchro

Reputation: 37710

This is very confused. Why are you calling mail() as well as using PHPMailer? I've no idea why you think you need to mess about with headers manually like that - the point of using a library like PHPMailer is so you don't have to concern yourself with things like that!

PHPMailer will not do anything with your image path if you just set Body - you need to pass your body into msgHTML() where it will look up the images and convert everything to embedded images.

There are examples provided with PHPMailer that show you how to do this (if not in the examples folder, look at the unit tests).

I can also see that you've based your code on an old example and are probably using an old version of PHPMailer, so I suggest you update to at least 5.2.10.

Upvotes: 1

Related Questions