【问题标题】:PHP Mailer send an mysql blob objectPHP Mailer 发送一个 mysql blob 对象
【发布时间】:2012-11-02 14:51:38
【问题描述】:

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

我正在发送邮件。

$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

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

【问题讨论】:

标签: php mysql blob phpmailer


【解决方案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 驱动程序)

【讨论】:

  • 他/她可能还应该使用mysql_real_escape_string而不是addslashes将数据插入数据库
  • 确实,我没注意!!
  • type 是必需的,如果我想传递一个 pdf 文件怎么办?我们可以作为可选类型输入吗?
  • 如果你不知道文件类型,你应该看看file_info函数。如果您确定它是 PDF,只需将“image/png”替换为“application/pdf”
猜你喜欢
  • 1970-01-01
  • 2013-12-26
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
相关资源
最近更新 更多