如何邮寄使用 php 创建的图像
How to mail an image created using php
我有以下代码,可将名字和姓氏添加到预定义图像上。
function create_image($fname, $lname)
{
$image = imagecreatefromjpeg('sample.jpg');
$color = imagecolorallocate($image, 255, 255, 255);
$font_path = '../fonts/GSMT.TTF';
$font_size = 18;
$first_name = $name;
$last_name = $lname;
$name = $fname." ". $lname;
// Print Text On Image
imagettftext($image, $font_size, 0, 100, 160, $color, $font_path, $name);
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
}
我使用以下电子邮件脚本;
function mailer($email_adrress, $registration_id)
{
$mail = new PHPMailer;
$mail->isSMTP(); // set mailer to use SMTP
$mail->Host = 'mail.server.com'; // set mail server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Username = 'email@address.com'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->Port = 587; // TCP port to connect to
$mail->IsHTML(true);
$mail->From = 'johndoe@gmail.com';
$mail->FromName = 'John Doe'; // from name
$mail->addAddress($email_adrress); // recipient
$mail->Subject = 'emailer';
$mail->Body = "Congratulations you have been Successfully registered.
if(!$mail->send())
{
die("error mail not sent);
}
}
当调用create_image函数时,图像创建成功。但我的问题不是将图像打印到浏览器上,而是如何邮寄它。
我应该暂时保存图像直到邮件发送然后删除它,还是有其他方法?
是的,你需要保存,发送,然后删除,就像你说的。直接用php显示出来就不行了。但是,您也许可以使用 iframe。但是我认为第一个方案是最好的。
我认为你应该使用输出缓冲并将图像编码为 base64 并在 src 标签中使用它
ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($image);
$contents = ob_get_contents();
ob_end_clean();
现在你需要 base64 内容
$base64 = base64_encode($contents);
现在您可以在消息中使用它 HTML 内容
<img src="data:image/jpeg;base64,$base64">
我有以下代码,可将名字和姓氏添加到预定义图像上。
function create_image($fname, $lname)
{
$image = imagecreatefromjpeg('sample.jpg');
$color = imagecolorallocate($image, 255, 255, 255);
$font_path = '../fonts/GSMT.TTF';
$font_size = 18;
$first_name = $name;
$last_name = $lname;
$name = $fname." ". $lname;
// Print Text On Image
imagettftext($image, $font_size, 0, 100, 160, $color, $font_path, $name);
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
}
我使用以下电子邮件脚本;
function mailer($email_adrress, $registration_id)
{
$mail = new PHPMailer;
$mail->isSMTP(); // set mailer to use SMTP
$mail->Host = 'mail.server.com'; // set mail server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Username = 'email@address.com'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->Port = 587; // TCP port to connect to
$mail->IsHTML(true);
$mail->From = 'johndoe@gmail.com';
$mail->FromName = 'John Doe'; // from name
$mail->addAddress($email_adrress); // recipient
$mail->Subject = 'emailer';
$mail->Body = "Congratulations you have been Successfully registered.
if(!$mail->send())
{
die("error mail not sent);
}
}
当调用create_image函数时,图像创建成功。但我的问题不是将图像打印到浏览器上,而是如何邮寄它。 我应该暂时保存图像直到邮件发送然后删除它,还是有其他方法?
是的,你需要保存,发送,然后删除,就像你说的。直接用php显示出来就不行了。但是,您也许可以使用 iframe。但是我认为第一个方案是最好的。
我认为你应该使用输出缓冲并将图像编码为 base64 并在 src 标签中使用它
ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($image);
$contents = ob_get_contents();
ob_end_clean();
现在你需要 base64 内容
$base64 = base64_encode($contents);
现在您可以在消息中使用它 HTML 内容
<img src="data:image/jpeg;base64,$base64">