PHP——php脚本如何自动发送邮件
来源:互联网 发布:淘宝达人也能赚佣金吗 编辑:程序博客网 时间:2024/05/20 07:31
核心思想就是利用了php 的mail函数。支持脚本化自动发送邮件,并且可以带附件。
Mail 简介
函数允许您从脚本中直接发送电子邮件。要使邮件函数可用,PHP 需要已安装且正在运行的邮件系统。要使用的程序是由 php.ini 文件中的配置设置定义的。
1 首先封装一个Mail class类。
<?php //邮件发送类class Mail{ //发送指定文件列表到邮箱列表 //邮件接收人列表,类型为数组 //附件数据文件为全路径,数组 //attachmentType, 为附件添加的文件类型后缀 public function sendData($toList, $from, $subject, $message, $attachmentFileList, $attachmentType) { $to = ''; foreach ($toList as $key => $email) { $to = empty($to) ? $email : $to.','.$email; } if (empty($to)) { return false; } $attachments = array(); foreach($attachmentFileList as $key => $fileFullPath) { $attachments[$fileFullPath] = file_get_contents($fileFullPath); } $this->doMail($to, $from, $subject, $message, $attachments, $attachmentType); } private function doMail($to, $from, $subject, $message, $attachments, $attachmentType) { // 建立在邮件中分隔不同部分的分界线。 // 基本上,分界线可以是任意的字符串。 // 但是重要的一点是确定一个写邮件的人 // 这会随意写出的字符串,所以我们用 // uniqid 函数来产生一个随机的字符串。 $boundary = "||||||||||||||||||||||"; // 现在我们要建立邮件头。不要忘了插入 // Content-type头来说明这个邮件包含一个或更多的附件。 $headers = "From: $from Accept-Language: zh-CN, en-US Content-Language: zh-CN Content-type: multipart/mixed; boundary=\"$boundary\" MIME-Version: 1.0"; //消息内容 $emailBody = $message; $attachmentContent = ''; foreach ($attachments as $fileFullPath => $attachment) { $pos = strrpos($fileFullPath, '/'); $fileName = substr($fileFullPath, $pos + 1, strlen($fileFullPath) - $pos - 1).".".$attachmentType; $attachment = base64_encode($attachment); $attachmentContent .= "--$boundary Content-Type: application/vnd.ms-excel; name=\"$fileName\" Content-Description: $fileName Content-Disposition: attachment; filename=\"$fileName\"; Content-Transfer-Encoding: base64 $attachment "; } // 好,现在我们已经有了邮件的所有内容。 // 下一件事是修改邮件的主体。 $emailBody = "--$boundaryContent-Type: multipart/alternative; boundary=\"_000_396C66BA033B7149911C4430D9E0A547037C3Fm1mailmb16interna_\"--_000_396C66BA033B7149911C4430D9E0A547037C3Fm1mailmb16interna_Content-Type: text/plain; charset=\"gb2312\"Content-Transfer-Encoding: base64DQo=--_000_396C66BA033B7149911C4430D9E0A547037C3Fm1mailmb16interna_Content-Type: text/html; charset=\"gb2312\"Content-Transfer-Encoding: quoted-printable<html><body>$emailBody</body></html>--_000_396C66BA033B7149911C4430D9E0A547037C3Fm1mailmb16interna_$attachmentContent--$boundary--"; mail( $to, $subject, $emailBody, $headers); }}?>
2 然后就可以把上面的类require_once 进来,进行自动化发送邮件了。
<?phprequire_once("./Mail.class.php");define("FILEPATH", "*****");// $td = date("Ymd",strtotime('-0 day'));$temp=date('md',time());$toList =array('865734074@qq.com');//收件人列表$from = "jerry8340@126.com";//发件人$subject="邮件标题";$subject = "=?gb2312?B?".base64_encode($subject)."?=";$cn1=$argv[1];//脚本传入参数$message = "Hi,这里是邮件内容。$cn1 这是脚本传进来的参数</br>这是换行符    这是两个空格符 ";//如果不发送附件文件,则以下两个字段置空""$attachmentFileList=array(FILEPATH."sendfile1.txt",FILEPATH."sendfile2.txt");$attachmentType="";$mailMan = new Mail();$mailMan->sendData($toList, $from, $subject, $message, $attachmentFileList, $attachmentType);?>
3 最后随便写个shell脚本,加入到crontab 中自动化运行就可。就可以实现定时发送邮件的功能啦。
#!/bin/bashcn1=`date +%m%d`/home/.../php/bin/php ./sendcomplainmail.php $cn1
0 0
- PHP——php脚本如何自动发送邮件
- PHP 如何自动发送邮件?
- PHP自动发送邮件
- PHP如何发送邮件
- PHP自动发送邮件功能
- 如何设置PHP发送邮件
- php实现自动发送邮件pear Mail
- PHP实现邮件的自动发送
- PHP实现邮件的自动发送
- PHP实现邮件的自动发送
- [L-php]PHP功能模块——发送邮件
- PHP如何通过SMTP验证发送邮件
- 如何自动发送邮件
- PHP发送邮件原理
- php 邮件发送
- php定时发送邮件
- php 邮件发送系统
- PHP 发送邮件 附件
- JIRA项目执行与管理方案
- windbg - Getting Started with WinDBG - Part 2
- Cassandra命令行操作概述(推荐)
- 一个solution多个project 基于win32console的socket
- 淘宝购物车运费计算方式
- PHP——php脚本如何自动发送邮件
- Android---58---初学GPS定位
- javascript 阻止浏览器弹窗
- 使用 SQLiteDatabase 操作 SQLite 数据库
- Druid数据库连接池使用
- 【主席树】 HDOJ 4729 An Easy Problem for Elfness
- opencv下 计算运行时间
- 关于提问的智慧
- WordPress增加侧边栏sidebar