通过sendcloud发送邮箱&附件功能

自己在yii2/laravel5.4两个框架上得到验证,这次直接上代码使用的是yii2,需要laravel代码的同学可以私我
废话不多说,直接上干货
DEMO下载地址:http://www.sendcloud.net/doc/email_v2/code/

下载完成以后就能看到官方给我们的例子

function send_mail() {$url = 'http://api.sendcloud.net/apiv2/mail/send';//就是一些配置参数,建议写成配置文件$API_USER = '...';$API_KEY = '...';$param = array('apiUser' => $API_USER, # 使用api_user和api_key进行验证'apiKey' => $API_KEY,'from' => 'sendcloud@sendcloud.org', # 发信人,用正确邮件地址替代'fromName' => 'SendCloud','to' => 'test@ifaxin.com', # 收件人地址,用正确邮件地址替代,多个地址用';'分隔'subject' => 'Sendcloud php webapi with attachment example','html' => '欢迎使用SendCloud','respEmailId' => 'true');//上传的附近路劲信息$file = "./test.txt"; #你的附件路径1$handle = fopen($file,'rb');$content = fread($handle,filesize($file));$file2 = "./test2.txt"; #你的附件路径2$handle2 = fopen($file2,'rb');$content2 = fread($handle2,filesize($file2));$eol = "\r\n";$data = '';$mime_boundary=md5(time());// 配置参数foreach ( $param as $key => $value ) { $data .= '--' . $mime_boundary . $eol;  $data .= 'Content-Disposition: form-data; '; $data .= "name=" . $key . $eol . $eol; $data .= $value . $eol; }// 配置文件$data .= '--' . $mime_boundary . $eol;$data .= 'Content-Disposition: form-data; name="attachments"; filename="filename.txt"' . $eol;$data .= 'Content-Type: text/plain' . $eol;$data .= 'Content-Transfer-Encoding: binary' . $eol . $eol;$data .= $content . $eol;$data .= '--' . $mime_boundary . $eol;$data .= 'Content-Disposition: form-data; name="attachments"; filename="filename2.txt"' . $eol;$data .= 'Content-Type: text/plain' . $eol;$data .= 'Content-Transfer-Encoding: binary' . $eol . $eol;$data .= $content2 . $eol;$data .= "--" . $mime_boundary . "--" . $eol . $eol; $options = array('http' => array('method' => 'POST',//邮件发送必须是post'header' => 'Content-Type: multipart/form-data;boundary='.$mime_boundary . $eol,'content' => $data));$context  = stream_context_create($options);$result = file_get_contents($url, FILE_TEXT, $context);return $result;fclose($handle);fclose($handle2);
}

以上就是官方给我们提供的demo,也没有什么特别需要主要的.根据自己项目需求自己修改就好,下面给出yii2框架结合sendcloud发送邮件

public static function sendMailUsingSendCloud($email='',$file=[]){if (empty($email))return json_encode(['result'=>false,"statusCode"=>1,'msg'=>'邮箱不正确'],JSON_UNESCAPED_UNICODE);$cache = \Yii::$app->cache;//验证email请求时间if ($cache->exists($email)){return json_encode(['result'=>false,"statusCode"=>1,'msg'=>'请求频繁,请稍后重试'],JSON_UNESCAPED_UNICODE);}//缓存2分钟$cache->add($email,1,2);$url = 'http://api.sendcloud.net/apiv2/mail/send';$param = array('apiUser'     => \Yii::$app->params['sendcloud_API_user'], # 使用api_user和api_key进行验证'apiKey'      => \Yii::$app->params['sendcloud_API_key'],'from'        => \Yii::$app->params['sendcloud_from'], # 发信人,用正确邮件地址替代'mail_from'   => \Yii::$app->params['sendcloud_from'], # 发信人,用正确邮件地址替代'fromName'    => \Yii::$app->params['sendcloud_fromName'],'to'          => $email, # 收件人地址,用正确邮件地址替代,多个地址用';'分隔'subject'     => \Yii::$app->params['sendcloud_subject'],'html'        => \Yii::$app->params['sendcloud_html'],'respEmailId' => 'true');$eol = "\r\n";$data = '';$mime_boundary=md5(time());// 配置参数foreach ( $param as $key => $value ) {$data .= '--' . $mime_boundary . $eol;$data .= 'Content-Disposition: form-data; ';$data .= "name=" . $key . $eol . $eol;$data .= $value . $eol;}//这步就是结合官方示例对多附件的一个处理if (!empty($file)){foreach ( $file as $key => $val ){$files = $val['download_url']; #你的附件路径1$content = file_get_contents($files);$data .= '--' . $mime_boundary . $eol;$data .= 'Content-Disposition: form-data; name="attachments"; filename="'.$val['file_name'].'"' . $eol;$data .= 'Content-Type: text/plain' . $eol;$data .= 'Content-Transfer-Encoding: binary' . $eol . $eol;$data .= $content . $eol;}}$data .= "--" . $mime_boundary . "--" . $eol . $eol;$options = array('http' => array('method'  => 'POST','header'  => 'Content-Type: multipart/form-data;boundary=' . $mime_boundary . $eol,'content' => $data));$context = stream_context_create($options);$result  = file_get_contents($url, FILE_TEXT, $context);//可以根据自己情况.给每次发送邮件做记录return $result;}

以上就是通过yii2结合sencloud发送邮件的功能,其实和官网给的示例变动不是很多,我只不过就封装了一下该方法,方便以后使用,更加灵活

自己遇到的一个小问题:
可能有些同学可能就会问了.问什么我发送的邮件会出现谁谁谁代发的情况

其实官方FAQ也说明了,链接 http://www.sendcloud.net/doc/faq/

官方说的非常明了.这个东西啊.只要保证了mail_form和from一致,就不会显示代发,但是网易邮箱除外,大家注意一下就好了

大家如果有喜欢我的,可以点一下关注.我会不定时更新平时一些新技术和遇到的一些问题,当然大家有不懂的也可以问我,大家一起相互学习进步

php 通过sendcloud发送邮件附件功能相关推荐

  1. linux发送邮件的功能总结

    使用linux系统服务器发送邮件的功能在平时工作中也是经常需要用到的,在这里总结一下,供以后参考: 1.直接使用管道发送邮件 echo "hello,this is the content ...

  2. Shell发送邮件+附件

    Shell发送邮件+附件 1. 生成QQ邮箱授权码 2. 服务器配置 2.1 关闭sendmail的服务 2.2 开启postfix服务 2.3 创建认证 2.3 配置mail.rc 3. 测试 3. ...

  3. 微信公众号编辑器的附件功能(如Word、Excel、Pdf等)

    微信公众号大家都不陌生吧,相信很多朋友也都有一个自己的微信公众号.曾经的我也为了自己的公众号专门研究各种公众号技巧,熟悉公众号编辑器的各种功能和排版. 作为一个公众号运营者,我们是否需要在微信公众号文 ...

  4. 网易邮箱添加附件功能原理浅析

    网易邮箱添加附件功能原理浅析 个人觉得网易邮箱的添加附件功能是比较酷的,这两天网上网下研究了下.有些心得写出来,免得遗忘. 一切起源于type为file的input,这是没话可多说的(这个东西很神秘) ...

  5. python 发送邮件附件很慢_python发送邮件附件

    python发送邮件附件 完整示例: import smtplib import os # from email.header import Header from email.mime.text i ...

  6. ORACLE EBS中附件功能的使用

    简要说明: 应用开发员>附件 定义文档实体Document Entities,将要加附件中的表在这里注册 定义单据分类Document Categories,将单据做一个分类 定义附件功能Doc ...

  7. html 如何添加附件,javascript实现添加附件功能的方法

    在邮件中我们经常用到添加附件,现在简单的应用下: 效果图: 实现原理: 采用table标签的,主要思想:采用table标签方式 1.点击文字之后,就自动创建(原先是自己/创建,现在拿到table对象之 ...

  8. 创建文件、文件上传下载、发送邮件附件以及文件点击预览功能(超详细注解)

    根据模板生成文件 @Overridepublic File exportStuFileExcelNew(Studengt student, Page<StuFile> page)throw ...

  9. android 添加附件功能,Android实现带附件的邮件发送功能

    本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助gmail app客户端,缺点是必须使用gmail帐号 ...

  10. android 信息添加附件功能,Android实现带附件的邮件发送功能

    本文实例讲解了基于基于JMail实现Android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号 ...

最新文章

  1. Django模板之jinja2模板和CSRF
  2. TypeScript 的命名空间 namespace
  3. SAP Commerce Cloud ( 电商云 ) 路由路径的自定义配置与开发
  4. [转]Eclipse下的JavaScript编辑器中文无法保存问题解决
  5. FFmpeg入门测试
  6. Win7安装curl工具、解决PowerShell ISE中文乱码问题
  7. 用友软件常用名词解释
  8. 采用数值方法计算最速曲线
  9. 使用手机摄像头做网络ip摄像头用opencv中打开
  10. msfconsole使用手册
  11. 通过regedt查看计算机密码,教你操作电脑密码查看器 【解决办法】 的还原教程_...
  12. java md5加密与解密_Java——MD5加密与解密
  13. 花 作品php,《不谢之花》作品赏析
  14. 更换IP地址方式简介。
  15. 智能指针(一)—— 智能指针的底层原理(RAII特性)
  16. python学生成绩管理系统 毕业设计-附源码061011
  17. 黑马Redis实战篇—给商铺类型缓存(练习)
  18. SpringBoot整合Javamail实现邮件发送
  19. Ubuntu 14.04安装WPS
  20. 基于Kubernets+Prometheus+ELK企业级CICD平台建设方案

热门文章

  1. 计算机用通讯电压多少,通信局(站)用交流电源的质量指标要求
  2. iOS Swift之RxSwift初探
  3. git推送拉取需要验证信息
  4. 专访王豫翔:编程道路上的“三少三多”
  5. NPN、PNP型三极管的常见问题
  6. 华为云服务器查看备份文件,云服务器备份查看备份
  7. 计算机编程学英语词汇,计算机编程常用英语词汇
  8. PS如何扣除部分图并添加图
  9. 【21考研】计算机/软件等专业调剂信息集合!【完结版】
  10. x86服务器是32位系统嘛,x86是什么意思?x86是32位还是64位?