PHP Mailer发送一个mysql blob对象

时间:2012-11-02 14:51:39

标签: php mysql blob phpmailer

我正在mysql blob对象中存储pdf或文本文件,我正在尝试使用php邮件程序将其作为附件发送到邮件中。

我发送邮件就像。

$mail->AddAddress($pr_email);
$mail->Subject = "Meeting Invitation -$meeting_name";

$mail->AddStringAttachment($data);
$mail->IsHTML(true);
$mail->Body =$message;

if(!$mail->Send())
{
    $message= "Error sending: " . $mail->ErrorInfo;
    header("Location:userprofile.php?Message={$message}");
}

$data来自

$tmpName  = $_FILES['image']['tmp_name'];
$fp     = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$query = "UPDATE demo_meeting SET attachment='$data' where meetingID='$mtngid'";
$results = mysql_query($query);

现在我收到邮件作为附件,但内容不存在,只显示0K

请告诉我我可能做错了什么。

1 个答案:

答案 0 :(得分:1)

正如我所看到的here in StackOverflow,您没有将其他参数传递给AddStringAttachment:mime类型和文件名。

$filename="test.png";
$encoding = "base64"; 
$type = "image/png";
$mail->AddStringAttachment(base64_decode($data), $filename, $encoding, $type);

此外,永远不要使用addslashes来“保护”一个mysql字段,你必须使用mysql_real_escape_string代替(或使用PDO_MySQL驱动程序,这个驱动程序不会很快被标记为过时的)