如何使用HTML将.png添加到传出的PHP电子邮件中


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

很长一段时间以来,我一直试图在我的php电子邮件中添加一个png,但没有成功。我尝试了传统的方法,并尝试使用这个网站将Base64添加到html和css中http://www.base64-image.de

但无论我做什么,我都会得到一个空白的标题。有人能一步一步地告诉我,我必须做什么才能在我发送的电子邮件中显示png吗?不,它不能是附件提前感谢

 <?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: send_from_name@comcast.net
// pass: password
$mail2->Username = "name@comcast.net"; // 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 = 'user@gmail.com';

//Set who the message is to be sent from
$mail2->setFrom('user@gmail.com', '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('talk@gmail.com');

// 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['user@gmail.com']) . "'r'n";
$headers .= "Reply-To: ". strip_tags($_POST['talk@gmail.com']) . "'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";
?>

这是非常混乱的。为什么您在使用PHPMailer的同时还要呼叫mail()?我不知道你为什么认为你需要像那样手动处理标题——使用PHPMailer这样的库的目的是让你不必担心这样的事情!

如果你只设置Body,PHPMailer不会对你的图像路径做任何事情——你需要将你的身体传递到msgHTML(),它会在那里查找图像并将所有内容转换为嵌入图像。

PHPMailer提供了一些示例,向您展示了如何做到这一点(如果不在examples文件夹中,请查看单元测试)。

我还可以看到,您的代码基于一个旧示例,并且可能正在使用PHPMailer的旧版本,因此我建议您至少更新到5.2.10。