Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取base64 img src并通过电子邮件发送_Php_Email_Base64 - Fatal编程技术网

Php 获取base64 img src并通过电子邮件发送

Php 获取base64 img src并通过电子邮件发送,php,email,base64,Php,Email,Base64,我正在创建一个JPEG图像,并试图通过电子邮件发送它。但问题是我试图发送的文件出现了错误 无法访问文件 此函数位于postergenerator.php下 function returnImage() { ob_start(); header( "Content-type: image/jpeg" ); imagejpeg( $my_img,null,100); imagecolordeallocate( $line_color )

我正在创建一个JPEG图像,并试图通过电子邮件发送它。但问题是我试图发送的文件出现了错误

无法访问文件

此函数位于postergenerator.php下

function returnImage() {
        ob_start();
        header( "Content-type: image/jpeg" );
        imagejpeg( $my_img,null,100);
        imagecolordeallocate( $line_color );
        imagecolordeallocate( $text_color );
        imagecolordeallocate( $background );
        imagedestroy( $my_img );
        $i = ob_get_clean();
        echo base64_encode( $i ); 
        return base64_encode( $i );
    }
此脚本用于获取图像base64并将其发送到mail SendEmail.php

$formdata = array();
foreach($_POST as $key => $value )
{
$formdata[$key] = $value;
}
$formdata["resize"] = 1;

include "postergenerator.php";
//returnImage();

require 'PHPMailerAutoload.php';
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "***@gmail.com";
$mail->Password = "****";
$mail->SetFrom("***@gmail.com");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("***@msn.com");

$file_to_attach = returnImage();

$mail->AddAttachment($file_to_attach);

if(!$mail ->Send())
{
    echo 'mailer error:' . $mail->Errorinfo;

}
else
{

echo "Mail has been sent";
}
运行sendmail.php脚本时,输出为:

 <img  src='data:image/jpeg;base64,/9j ****I deleted it***** class="img-responsive">
任何帮助都将不胜感激

$mail->addAttachment(..)
仅允许您从本地文件系统添加文件附件。 你的

函数返回base64编码的字符串

在你的情况下,我会做类似的事情:

$mail->Body = sprintf("<img src='data:image/jpeg;base64,%s' alt='' />", returnImage());
$mail->Body=sprintf(“,returnImage());
returnImage()
$mail->Body = sprintf("<img src='data:image/jpeg;base64,%s' alt='' />", returnImage());