网站开发日志

2009年6月22日星期一

分享家:Addthis中国

PHP发送Gmail邮件加附件

前一段,我介绍了如何用PHP调用Gmail发送邮件,此方法只适用于发送文本邮件,也就是不支持附件发送。其实,要发送附件也不难,只是需要安装一个模块:Mail-Mime。下面就给大家做过详细介绍。

1.首先安装Mail-Mime, 你可以到pear网站下载后安装,如果你的机子装有Pear的包管理器,你直接运行下面的命令即可:

mail-mime pear install -o Mail_Mime
#在unbuntu下,使用sudo
sudo mail-mime pear install -o Mail_Mime

2. 使用下面的代码,这和PHP调用Gmail发送邮件一文中介绍的代码相识,不同的是多了Mail_Mime, 它是用来构造邮件的主题部分(内容和附件):

<?php
require_once "Mail.php";
require_once "Mail/mime.php";
//请用你的Gmail帐号和密码替代
$host = "smtp.gmail.com";
$username = "your-account";
$password = "your-password";
//定义收信人,发信人,以及主题和信息等
$from = "Adam<your@gmail.com>";
$to = "Cindy<someone@any.com>";
$subject = "Hi!";
$text = "Hi,\n\nHow are you?";
$html = "<b>hi</b>; 你也可以发送HTML格式的邮件
//定义附件路径和名称
$file = "/root/test/mail.php";
//如果你对下面的代码不熟悉,那么就请保留原样
$crlf="\n";
$headers = array (
	'From' => $from,
  	'Subject' => $subject);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($text);
$mime->setHTMLBody($html); //发送HTML
$mime->addAttachment($file, 'text/plain');
$body = $mime->get();
$hdrs = $mime->headers($headers);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));
$mail = $smtp->send($to, $hdrs, $body);
if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>

注意:在上述代码里,我使用的附件内容类型是文本(content-type:text/plain)。如果你要发送PDF,图片,ZIP等其他文件类型,你可以使用下面的代码代替:

$mime->addAttachment($file, 'text/plain'); //文本
$mime->addAttachment($file, 'application/pdf'); //PDF
$mime->addAttachment($file, 'image/gif'); //图片
$mime->addAttachment($file, 'application/zip'); //ZIP
关于content_type (内容类型),请参考:w3schools的介绍

标签:

相关文章:

2 条评论:

  • 大大:你好!你是用传统blogger模板吧!
    我想用这个模板。能否把源代码发给我。
    ljhui17@gmail.com

    作者 Blogger 麦芽糖, 时间 2009年6月28日 下午10:49  

  • 麦芽糖:
    很高兴知道你对本站模板的喜爱。因为目前的模板有很多地方是针对本站本身设计的,所以你可能还不能直接使用。等我有空了,我会把模板整理出来发布,到时一定通知你。

    谢谢!

    Adam

    作者 Anonymous Adam, 时间 2009年6月29日 下午12:17  

发表评论

指向此帖子的链接:

创建链接