通过Mime / SMTP Gmail服务器(PHP,PEAR)发送的邮件中缺少附件

时间:2013-05-14 20:38:59

标签: php email smtp gmail pear

我使用Pear的Mail Mime通过SMTP Gmail从我的服务器发送电子邮件。但是当我添加一个附件时,它根本就没有出现。

$smtpinfo["host"] = "ssl://smtp.gmail.com";  
$smtpinfo["port"] = "465";  
$smtpinfo["auth"] = true;  
$smtpinfo["username"] = "xxx";  
$smtpinfo["password"] = "xxx";  

$headers = array(
'From'    =>  $from,
'To'      =>  $to,
'Subject' =>  utf8_decode($subject)
);

$mime = new Mail_mime();

$mime->setHTMLBody($html);

$mime->addAttachment("http://ww.url.of.a.file.that.exists.100percent.jpg", "image/jpeg");

$body = $mime->get(array('html_charset' => 'utf-8','charset' => 'utf-8'));

$headers = $mime->headers($headers);

$smtp = Mail::factory('smtp', $smtpinfo);

$mail = $smtp->send($to, $headers, $body);

一切都很好,只是附件完全丢失了.. 我一直在谷歌搜索几个小时..我很欣赏任何提示..

1 个答案:

答案 0 :(得分:0)

我的第一个想法是检查addAttachment方法的[boolean]响应,看它是否返回'not found'或其他类型的指示

$fileAttached = $mime->addAttachment("http://ww.url.of.a.file.that.exists.100percent.jpg", "image/jpeg");
echo ( !empty($fileAttached) ) ? "Attached successfully!" : "Uh, Houston?";

我最初的想法是,它希望'file'成为你系统的“loca”,而不是通过http等访问。而且,即使它允许HTTP访问,你也可能想检查你的allow_url_fopen in .ini文件,以确保它被设置为'enabled'{“On”,如果查看你的phpinfo()结果。

有关'档案'的其他信息 -

http://pear.php.net/manual/en/package.mail.mail-mime.addattachment.php