我使用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);
一切都很好,只是附件完全丢失了.. 我一直在谷歌搜索几个小时..我很欣赏任何提示..
答案 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