php 发送邮箱(添加附件)

点击寄件:

html:上传文档

<form action="" enctype='multipart/form-data'>
	<div class="mailbox email">
		<a href="#">
            <img src="icon_1_hover.jpg">
        </a>
		<input type="file" name="img" style="display: none" class="docx">
	</div>
</form>

js:

<script>
	$('.email').click(function () {

		var session = $('#session').val();

		if (session == ''){
				location.href = '/l_login';
		}

		$('.docx').click();

	});

	$('.docx').change(function () {
		var formdata = new FormData();
		var file = $("input[type='file']")[0].files[0];
		formdata.append("img", file);
		$.ajax({
			url: "{:url('/up_docx')}",
			type: 'POST',
			data: formdata,
			cache: false,//上传文件不需要有缓存
			contentType: false,//不设置内容类型
			processData: false,//不处理发送的数据
			success: function (data) {
				console.log(data);
				if (data.code == 1){
					alert('发送成功')
				} else {
					alert('发送失败')
				}
			}
		})
	});
</script>

php代码:

public function up_docx(){
    #用户
    $uid = session('uid');

    $file = request()->file('img');
    // 移动到框架应用根目录/uploads/ 目录下
    $info = $file->move( 'uploads/docx');
    if($info){
        // 成功上传后 获取上传信息
        $date = date("Ymd",time());

        $file_name = $date.'/'.$info->getFilename();

        $res = 'uploads/docx/'.$file_name;

        $result = $this -> sendEmail($file_name,$uid);

        echo '上传成功';
      }else{
         // 上传失败获取错误信息
         echo $file->getError();
      }
    }
}

发送邮箱

/**
     * 发送邮箱
     * @param type $data 邮箱队列数据 包含邮箱地址 内容
     */
    public function sendEmail($data,$id)
    {

        //实例化PHPMailer核心类
        $mail = new PHPMailer(true);

        //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
        $mail->SMTPDebug = 0;

        //使用smtp鉴权方式发送邮件
        $mail->isSMTP();

        //smtp需要鉴权 这个必须是true
        $mail->SMTPAuth=true;

        //链接qq域名邮箱的服务器地址
        $mail->Host = 'smtp.163.com';//163邮箱:smtp.163.com

        //设置使用ssl加密方式登录鉴权
        $mail->SMTPSecure = 'ssl';//163邮箱就注释

        //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
        $mail->Port = 465;

        //设置smtp的helo消息头 这个可有可无 内容任意
        // $mail->Helo = 'Hello smtp.qq.com Server';

        //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
        //$mail->Hostname = 'http://localhost/';

        //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
        $mail->CharSet = 'UTF-8';

        //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
        $mail->FromName = $id;

        //smtp登录的账号 这里填入字符串格式的qq号即可
        $mail->Username ='@163.com';

        //smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)
        $mail->Password = '';//163邮箱也有授权码 进入163邮箱帐号获取

        //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
        $mail->From = '@163.com';

        //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
        $mail->isHTML(true);

        //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
        $mail->addAddress("@163.com");

        //添加多个收件人 则多次调用方法即可
        // $mail->addAddress('xxx@163.com','爱代码,爱生活世界');

        //添加该邮件的主题
        $mail->Subject = '寄件';

        //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件
        $mail->Body = '邮件';

        //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
         $RootDir = $_SERVER['DOCUMENT_ROOT'];
         $fireDir = "$RootDir/uploads/docx/".$data;
         $mail->addAttachment($fireDir);

        //同样该方法可以多次调用 上传多个附件
        // $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');

        $status = $mail->send();

        //简单的判断与提示信息
        if($status) {
            return true;
        }else{
            return false;
        }
    }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值