精华内容
下载资源
问答
  • 测试qq发送文件

    2018-04-29 17:17:11
    http://blog.sina.com.cn/s/blog_1522bcd960102w9xx.html主要测试功能点:​发送方:QQ 文件​接收方:QQ 文件发送方的文件 测试功能点: 1.文件的格式 JPG?AVI?MP4?​2.文件的大小限制 100M?1M? //这里要...

    http://blog.sina.com.cn/s/blog_1522bcd960102w9xx.html

    主要测试功能点:

    ​发送方:QQ 文件

    ​接收方:QQ 文件

    二 发送方的文件  测试功能点:

     1.文件的格式  JPG?AVI?MP4?

    ​2.文件的大小限制 100M?1M?    //这里要考虑到QQ会员与非会员之间可能存在的区别

    三.接收方的QQ  测试功能点:

    ​1.QQ的状态:在线,离开,离线,隐身。。。。  各种状态下接收文件的测试;

    ​2.QQ的功能:普通用户,会员,钻石会员,还有一些乱七八杂的什么什么会员  各种功能下接文件的测试;

    ​四.接收方接到的文件

    ​1.文件的内容  文件是否正确被接收?修改时间,属性,版本等相关属性是否与发送方一致?

    ​2.文件大小  接收方的磁盘空间五.网络网络状态:断开,连接,时断时连 //文件能不能续传?//发送方在线,接收方离线时  能不能发文件?

    1、  功能测试

    传送成功:

    1)  文件直接拖到对话框,发送----开始传送

    2)  点击传送文件按钮,发送—开始传送

    3)  传送中显示传送进度条

    4)  传送中文件名称正确显示,并显示文件大小

    5)  给同一用户传送1个文件、多个文件—--能同时传送多个文件

    6)  同时给不同用户传送文件

    7)  文件打开的时候传送文件---可以传送

    8)  文件接收后,检查文件的完整性。

    9)  文件是否可以正常接收。

    10)  接收时候默认路径

    11)  是否可以更改文件接收路径

    12)  文件传送时,不影响聊天功能,不影响任何其他功能的使用。

    13)  同一个文件发送给多个人

    14)  同一个文件发送给同一个人多次

    15)对方在线

    16)对方不在线

    17)发送离线文件

    18)对方是好友

    19)与对方是临时会话

    20)选择下次接收文件

    文件传送失败:

    15)  点击取消可以取消文件的发送

    16)  直接关闭对话框,可取消文件的发送—出提示

    17)  断电、断网—传送中断

    18)  对方拒绝接收—传送中断

    2、  文件大小测试

    1)  空文件

    2)  文件夹嵌套1层

    3)  文件夹嵌套多层

    4)  文件夹嵌套很多层

    5)  空文件夹

    6)  10M的文件

    7)  10G的文件---边界值

    8)   

     

    3、  文件名称测试

    2)普通文件

    3)含有特殊字符的文件---传送中,接收后,文件名称都应该无误

    4)文件名为空的文件

    5)文件名为空格的文件

    6)文件名只有中文

    7)文件名有中应为混合

    8)文件名只有英文

       9)文件名有标点符号

     

    4、  文件格式测试

    1).exe文件------------安全性测试

     

    1)  Txt doc pdf

    2)  图片

    3)  视频

    4)  音频

    5)  压缩文件

    6)  文件夹

    7)  病毒文件---安全性测试

     

    5、  安全性测试

    1).exe文件------------安全性测试

    2)病毒文件

    6、  性能测试

    1)  上传时网速很慢

    2)  上传时CPU使用率

    3)  上传时断网

     

    7、  界面测试

    (1)界面美观性、易用性(键盘和鼠标的操作、tab跳转的顺序是否正确)----------显示正常(根据需求)

    (2)按钮文字是否正确--------------正确

    (3)正确/错误提示的文字是否正确---------------正确

    (4)说明性文字是否正确-----------------------正确

    8、  其他测试


    展开全文
  • 完整英文电子版 IEEE Std 2030.5-2018 Smart Energy Profile Application Protocol(智能能源配置文件应用协议)。本文档的目的是定义应用协议,以实现最终用户能源环境的公用事业管理,包括需求响应、负载控制、一...
  • 图 10 在电脑蓝牙和手机蓝牙配对的前提下,现在可以通过蓝牙向电脑发送文件了,电脑端接收过程如图11所示。 图 11 在博主的机子上,传输速度贼慢,可能所用的蓝牙协议比较渣吧。 参考教程: 教程 1

    如题,被这个问题困扰了许久,今天终于查到有效的解决方法。(之前好像也解决过,不过忘了过程,和这次的似乎不一样)
    因为博主的系统显示文字是英文,而且博主参考的教程也是英文,所以将就着看。(相信大多数人都看得懂这几个单词)

    1. 打开“Settings”,如图1所示。

    图 1


    1. 选择“Devices”,如图2所示。

    图 2


    1. 选择“Bluetooth & other devices”,如图3所示。

    图 3


    1. 选择“More Bluetooth options”,如图4所示。

    图 4


    1. 选择“COM ports”,如图5所示。

    图 5


    1. 点击“Add”,如图6所示。

    图 6


    1. 第6步后弹出的操作框如图7所示。

    图 7


    1. 选择“Incoming (device initiates the connection)”,如图8所示。

    图 8


    1. 点击“OK”,如图9所示。

    图 9


    1. 回到蓝牙设备的主界面,点击“Send or receive files via Bluetooth”,如图10所示。

    图 10


    1. 在电脑蓝牙和手机蓝牙配对的前提下,现在可以通过蓝牙向电脑发送文件了,电脑端接收过程如图11所示。

    图 11


    在博主的机子上,传输速度贼慢,可能所用的蓝牙协议比较渣吧。



    参考教程:

    教程 1

    展开全文
  • 公司需求:根据业务需要定时发送邮件,并且邮件需要有excel附件,附件内容为查询到的数据。 开发思路:由于服务器环境本身空间有限,而且不确定环境中读写权限,生成excel文件比较浪费资源,出现异常时可能导致删除...

    公司需求:根据业务需要定时发送邮件,并且邮件需要有excel附件,附件内容为查询到的数据。

    开发思路:由于服务器环境本身空间有限,而且不确定环境中读写权限,生成excel文件比较浪费资源,出现异常时可能导致删除临时文件失败。因此生成excel文件时不生成实际文件,直接获取到excel写入流,并且将流直接写入到邮件附件中。

    查询了很多网上资料以及java邮件API,最终得以实现,分享下供大家参考,互相学习!

    转载请标明出处:https://blog.csdn.net/yixin605691235/article/details/82429156

     

    详细代码:https://download.csdn.net/download/yixin605691235/10648074

    核心代码如下:

    配置邮箱服务器端口及发送人接收人

    mail.smtp.host=smtp.exmail.qq.com
    mail.smtp.port=465
    mail.send.address=xxx@xxx.xx
    mail.send.password=xxxxxx
    mail.accept.address=qqqqqq@qq.com
    mail.accept.address.other=qqqqqq@qq.com,qqqqqq@163.com

    生成excel工具类

    package com.yx.mail;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.lang.reflect.Field;
    import java.math.BigDecimal;
    import java.net.URLEncoder;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.LinkedHashMap;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.beanutils.PropertyUtils;
    import org.apache.commons.lang3.StringUtils;
    
    import jxl.Workbook;
    import jxl.common.Logger;
    import jxl.write.Label;
    import jxl.write.Number;
    import jxl.write.NumberFormat;
    import jxl.write.WritableCell;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    /**
     * java excel api(jxl) 导出excel工具类
     * @author Yanyanhui
     *
     */
    public class JxlUtil {
        
        private static Logger logger = Logger.getLogger(JxlUtil.class);
        
        private static int MAX_SHEET_SIZE = 65530;
        
        private static String DOUBLE_FORMAT = "#.00";
        private static String INTER_FORMAT = "#";
        
        private static WritableCellFormat INTER_CELL_FORMAT = new WritableCellFormat(new NumberFormat(INTER_FORMAT));
        private static WritableCellFormat DOUBLE_CELL_FORMAT = new WritableCellFormat(new NumberFormat(DOUBLE_FORMAT));
    
        /**
         * 列表转换成excel导出
         * @param list 要转换的列表
         * @param title 转换列表的标题
         * @param sheetName 工作表名称
         * @param request 请求
         * @param response 响应
         * @throws Exception
         */
        public static <T> void listToExcel(List<T> list,LinkedHashMap<String, String> title,String sheetName,HttpServletRequest request,HttpServletResponse response) throws Exception{
            listToExcel(list, title, sheetName, sheetName, 0, 0, request, response);
            
        }
        
        /**
         * 列表转换成excel导出
         * @param list 要转换的列表
         * @param title 转换列表的标题
         * @param sheetName 工作表名称
         * @param fileName excel文件名称
         * @param request 请求
         * @param response 响应
         * @throws Exception
         */
        public static <T> void listToExcel(List<T> list,LinkedHashMap<String, String> title,String sheetName, String fileName,HttpServletRequest request,HttpServletResponse response) throws Exception{
            listToExcel(list, title, sheetName, fileName, 0, 0, request, response);
            
        }
        
        /**
         * 列表转换成excel导出
         * @param list 要转换的列表
         * @param title 转换列表的标题
         * @param sheetName 工作表名称
         * @param fileName excel文件名称
         * @param startRow 从哪行开始输出
         * @param request 请求
         * @param response 响应
         * @throws Exception
         */
        public static <T> void listToExcel(List<T> list,LinkedHashMap<String, String> title,String sheetName, String fileName,int startRow,HttpServletRequest request,HttpServletResponse response) throws Exception{
            listToExcel(list, title, sheetName, fileName, 0, startRow, request, response);
        }
        
        /**
         * 列表转换成excel导出
         * @param list 要转换的列表
         * @param title 转换列表的标题
         * @param sheetName 工作表名称
         * @param fileName excel文件名称
         * @param sheetSize 工作表的大小
         * @param startRow 从哪行开始输出
         * @param request 请求
         * @param response 响应
         * @throws Exception
         */
        public static <T> void listToExcel(List<T> list,LinkedHashMap<String, String> title,String sheetName, String fileName,int sheetSize,int startRow,HttpServletRequest request,HttpServletResponse response) throws Exception{
    
            if (list == null || list.size() == 0) {
    //            throw new Exception("列表中没有任何数据");
            }
    
            if (sheetSize > MAX_SHEET_SIZE || sheetSize < 1) {
                sheetSize = MAX_SHEET_SIZE;
            }
    
            try {
                
                setResp(request, response, fileName);
    
                OutputStream outputStream = response.getOutputStream();
    
                WritableWorkbook wwb = Workbook.createWorkbook(outputStream);
                int size = 0;
                
                
                // 因为2003的Excel一个工作表最多可以有65536条记录,除去列头剩下65530条
                // 所以如果记录太多,需要放到多个工作表中,其实就是个分页的过程
                // 1.计算一共有多少个工作表
                double sheetNum = Math.ceil(size / new Integer(sheetSize).doubleValue());
                // 2.创建相应的工作表,并向其中填充数据
    
                WritableSheet sheet = wwb.createSheet(sheetName, 0);
                fillVeticalSheet(sheet, list, title, startRow, 0);
                
    //            setColumnAutoSize(sheet, 2);
                
                wwb.write();
                wwb.close();
    
            } catch (WriteException e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            } catch (IOException e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            } catch (Exception e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            }
        }
        
        
        /**
         * 以流的形式导出excel
         * @param list 要转换的列表
         * @param title 转换列表的标题
         * @param sheetName 工作表名称
         * @param fileName excel文件名称
         * @param sheetSize 工作表的大小
         * @param startRow 从哪行开始输出
         * @param request 请求
         * @param response 响应
         * @return 
         * @throws Exception
         */
        public static <T> ByteArrayOutputStream listToExcelReturnOut(List<T> list,LinkedHashMap<String, String> title,String sheetName, String fileName,int sheetSize,int startRow,HttpServletRequest request,HttpServletResponse response) throws Exception{
    
            if (list == null || list.size() == 0) {
    //            throw new Exception("列表中没有任何数据");
            }
    
            if (sheetSize > MAX_SHEET_SIZE || sheetSize < 1) {
                sheetSize = MAX_SHEET_SIZE;
            }
    
    //        OutputStream outputStream = response.getOutputStream();
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            setResp(request, response, fileName);
            try {
    
                WritableWorkbook wwb = Workbook.createWorkbook(outputStream);
                int size = 0;
                
                
                // 因为2003的Excel一个工作表最多可以有65536条记录,除去列头剩下65530条
                // 所以如果记录太多,需要放到多个工作表中,其实就是个分页的过程
                // 1.计算一共有多少个工作表
                double sheetNum = Math.ceil(size / new Integer(sheetSize).doubleValue());
                // 2.创建相应的工作表,并向其中填充数据
    
                WritableSheet sheet = wwb.createSheet(sheetName, 0);
                fillVeticalSheet(sheet, list, title, startRow, 0);
                
    //            setColumnAutoSize(sheet, 2);
                
                wwb.write();
                wwb.close();
                
                
            } catch (WriteException e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            } catch (IOException e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            } catch (Exception e) {
                e.printStackTrace();
                logger.error(e.getMessage());
            }
            return outputStream;
        }
        
    
    
        
        /**
         * 填充竖直方向的sheet
         * @param sheet
         * @param data
         * @param title
         * @param row
         * @param col
         * @throws Exception
         */
        public static <T> void fillVeticalSheet(WritableSheet sheet, List<T> data, LinkedHashMap<String, String> title, int row,
                int col) throws Exception {
            if (null == data || null == title) {
                return;
            }
    
            // 定义存放英文字段名和中文字段名的数组
            String[] enFields = new String[title.size()];
            String[] cnFields = new String[title.size()];
    
            // 填充数组
            int count = 0;
            for (Entry<String, String> entry : title.entrySet()) {
                enFields[count] = entry.getKey();
                cnFields[count] = entry.getValue();
                count++;
            }
    
            
            // 填充表头
            for (int i = 0; i < cnFields.length; i++) {
                String cnValue=cnFields[i];
                Label label = new Label(col + i, row,cnValue);
                sheet.addCell(label);
                sheet.setColumnView(col+i, cnValue.getBytes().length);//一个中文占2个字节,经过调试+4后效果比较理想 
        
            }
    
            // 填充内容
            int rowNo = row + 1;
            int colNo = col;
    
            for (int i = 0; i < data.size(); i++) {
                
                T item = data.get(i);
                for (int j = 0; j < enFields.length; j++) {
                    Object objValue = getFieldValueByNameSequence(enFields[j], item);
                    
                    WritableCell cell = getWritableCell(colNo+j, rowNo, objValue);
                    sheet.addCell(cell);
                    
                    
                }
    
                rowNo++;
            }
        }
        
        public static WritableCell getWritableCell(int column, int row, Object object){
            if (object == null) {
                return new Label(column, row, "");
            }
            
            String tempObj = object.toString();
            
            if (object instanceof Integer) {
                if (tempObj.equals("0")) {
                    return new Number(column, row, 0);
                }
    
                return new Number(column, row, Double.valueOf(tempObj),INTER_CELL_FORMAT);
            }
            
            
            if (object instanceof Double) {
                return new Number(column, row, Double.valueOf(tempObj),DOUBLE_CELL_FORMAT);
    
            }
            
            if (object instanceof BigDecimal) {
                if (tempObj.indexOf(".00") > 0) {
                    tempObj = tempObj.substring(0, tempObj.indexOf("."));
                    return tempObj.equals("0") ? new Number(column, row, 0)
                            : new Number(column, row, Double.valueOf(tempObj),INTER_CELL_FORMAT);
                }
    
                return new Number(column, row, Double.valueOf(tempObj),DOUBLE_CELL_FORMAT);
            }
            
            return new Label(column, row, tempObj);
            
        }
        
        
    
        /**
         * 根据带路径或不带路径的属性名获取属性值,即接受简单属性名,如userName等,又接受带路径的属性名,如student.department.
         * name等
         *
         * @param fieldNameSequence
         *            带路径的属性名或简单属性名
         * @param o
         *            对象
         * @return 属性值
         * @throws Exception
         *             异常
         */
        public static Object getFieldValueByNameSequence(String fieldNameSequence, Object o) throws Exception {
    
            Object value = null;
    
            // 将fieldNameSequence进行拆分
            String[] attributes = fieldNameSequence.split("\\.");
            if (attributes.length == 1) {
                value = PropertyUtils.getProperty(o, fieldNameSequence);
                
            } else {
                // 根据属性名获取属性对象
                Object fieldObj = PropertyUtils.getProperty(o, attributes[0]);
            
                
                String subFieldNameSequence = fieldNameSequence.substring(fieldNameSequence.indexOf(".") + 1);
                value = getFieldValueByNameSequence(subFieldNameSequence, fieldObj);
            }
            
            if (value instanceof Date) {
                value = new SimpleDateFormat("yyyy-MM-dd").format(
                        value).toString();    
                }
            
    //        if (value.toString().endsWith(".0000")) {
    //            String txt =value.toString();
    //            value = txt.substring(0, txt.lastIndexOf("."));
    //        }
            
            return value;
        }
    
        /**
         * 根据字段名获取字段
         *
         * @param fieldName
         *            字段名
         * @param clazz
         *            包含该字段的类
         * @return 字段
         */
        public static Field getFieldByName(String fieldName, Class<?> clazz) {
            // 拿到本类的所有字段
            Field[] selfFields = clazz.getDeclaredFields();
    
            // 如果本类中存在该字段,则返回
            for (Field field : selfFields) {
                if (field.getName().equals(fieldName)) {
                    return field;
                }
            }
    
            // 否则,查看父类中是否存在此字段,如果有则返回
            Class<?> superClazz = clazz.getSuperclass();
            if (superClazz != null && superClazz != Object.class) {
                return getFieldByName(fieldName, superClazz);
            }
    
            // 如果本类和父类都没有,则返回空
            return null;
        }
    
        
        public static <T> LinkedList<WritableCell> addCellInVertical(List<T> data, Map<String, String> dataTitle,
                Map<String, WritableCellFormat> cellFormatMap, int rowIndex, int colIndex) {
            Label label = new Label(1, 1, "中午");
    
            LinkedList<WritableCell> cells = new LinkedList<>();
            cells.add(label);
            return cells;
        }
    
        
    
        /**
         * 
         * @param fileName
         * @param request
         * @param response
         */
        private static void setResp(HttpServletRequest request, HttpServletResponse response, String fileName) {
            final String userAgent = request.getHeader("USER-AGENT");
    
            response.reset();
            // response.setContentType("application/vnd.ms-excel"); // 改成输出excel文件  
            response.setContentType("application/x-msdownload");
    
            try {
                String finalFileName = null;
    
                if (StringUtils.contains(userAgent, "MSIE")) {// IE浏览器
                    finalFileName = URLEncoder.encode(fileName, "UTF8");
                    }
    
                else if (StringUtils.contains(userAgent, "Mozilla")) {// google,火狐浏览器
                    finalFileName = new String(fileName.getBytes(), "ISO8859-1");
                    }
    
                else {
                    finalFileName = URLEncoder.encode(fileName, "UTF8");// 其他浏览器
                }
    
                String dataStr =  new SimpleDateFormat("yyyyMMddHHmmss").format(
                        new Date()).toString();
    
                // 这里设置一下让浏览器弹出下载提示框,而不是直接在浏览器中打开
                response.setHeader("Content-Disposition", "attachment; filename=" + finalFileName+"_"+dataStr + ".xls");
            } catch (UnsupportedEncodingException e) {
            }
    
        }
        
        /**
         * 设置工作表自动列宽和首行加粗
         *
         * @param ws
         *            要设置格式的工作表
         * @param extraWith
         *            额外的宽度
         */
        public static void setColumnAutoSize(WritableSheet ws, int extraWith) {
            // 获取本列的最宽单元格的宽度
            for (int i = 0; i < ws.getColumns(); i++) {
                int colWith = 0;
                for (int j = 0; j < ws.getRows(); j++) {
                    String content = ws.getCell(i, j).getContents().toString();
                    int cellWith = content.length();
                    if (colWith < cellWith) {
                        colWith = cellWith;
                    }
                }
                // 设置单元格的宽度为最宽宽度+额外宽度
                ws.setColumnView(i, colWith + extraWith);
            }
    
        }
        
    //    public static NumberFormat getNumFormate(Object object){
    //        NumberFormat numberFormat = new NumberFormat("");
    //        
    //    }
        
        public static void testExport(HttpServletRequest request,HttpServletResponse response) {
            try {
                setResp(request,response,"test");
    
                OutputStream outputStream = response.getOutputStream();
    
                WritableWorkbook wwb = Workbook.createWorkbook(outputStream);
                
                WritableSheet sheet = wwb.createSheet("test", 0);
    
                Label label = new Label(1, 1, "中午");
                sheet.addCell(label);
    
                wwb.write();
                wwb.close();
    
            } catch (WriteException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

     

    邮件工具类

     

    package com.yx.mail;
    
    
    import java.io.ByteArrayInputStream;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.mail.Address;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.Part;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    import javax.mail.internet.MimeMessage.RecipientType;
    import javax.mail.util.ByteArrayDataSource;
    import com.sun.mail.util.MailSSLSocketFactory;
    
    
    
    public class BaseMail {
    
    	/**
    	 * 发送邮件
    	 * 
    	 * @param to
    	 *            邮件收件人地址
    	 * @param copyEmail
    	 *            邮件抄送地址
    	 * @param title
    	 *            邮件标题
    	 * @param text
    	 *            内容
    	 * @param fileDs
    	 *            附件流
    	 */
    	public void sendMsgFileDs(String to, String copyEmail, String title, String text,ByteArrayInputStream inputstream) {
    		Session session = assembleSession();
    		Message msg=new MimeMessage(session);
    		try {
    			msg.setFrom(new InternetAddress(MailConfig.sendAddress));
    			msg.setSubject(title);
    			msg.setRecipients(RecipientType.TO, acceptAddressList(to,copyEmail));
    			MimeBodyPart contentPart=(MimeBodyPart) createContent(text,inputstream);//参数为正文内容和附件流
    //			MimeBodyPart stream = new MimeBodyPart();
    			
    //			MimeBodyPart part=(MimeBodyPart) createAttachment("D:/test/1.jpg");//可增加多个附件
    			MimeMultipart mime=new MimeMultipart("mixed");
    			mime.addBodyPart(contentPart);
    //			mime.addBodyPart(part);//可增加多个附件
    			msg.setContent(mime);
    			Transport.send(msg);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public Address[] acceptAddressList(String acceptAddress,String acceptAddressOther) {
    		// 创建邮件的接收者地址,并设置到邮件消息中
    		Address[] tos = null;
    		String [] copyEmail= acceptAddressOther.split(",");
    		try {
    			if (copyEmail != null) {
    				// 为每个邮件接收者创建一个地址
    				tos = new InternetAddress[copyEmail.length + 1];
    				tos[0] = new InternetAddress(acceptAddress);
    				for (int i = 0; i < copyEmail.length; i++) {
    					tos[i + 1] = new InternetAddress(copyEmail[i]);
    				}
    			} else {
    				tos = new InternetAddress[1];
    				tos[0] = new InternetAddress(acceptAddress);
    			}
    		} catch (AddressException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            return tos;
    	}
    	
    	public Session assembleSession() {
    		Session session = null;
    		Properties props=new Properties();
    		props.setProperty("mail.smtp.auth", "true");
    		props.setProperty("mail.transport.protocol", "smtp");
    		props.setProperty("mail.smtp.port", MailConfig.mailSmtpPort);
    		props.setProperty("mail.smtp.host", MailConfig.mailSmtpHost);//邮件服务器
    		//开启安全协议
            MailSSLSocketFactory sf = null;
            try {
                sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
            } catch (GeneralSecurityException e1) {
                e1.printStackTrace();
            }
    		props.put("mail.smtp.ssl.socketFactory", sf);
    		props.put("mail.smtp.ssl.enable", "true");
    		session = Session.getDefaultInstance(props, new MyAuthenricator(MailConfig.sendAddress,MailConfig.sendPassWord));
    		return session;
    	}
    	
    	static Part createContent(String content,ByteArrayInputStream inputstream){
    		MimeBodyPart contentPart=null;
    		try {
    			contentPart=new MimeBodyPart();
    			MimeMultipart contentMultipart=new MimeMultipart("related");
    			MimeBodyPart htmlPart=new MimeBodyPart();
    			htmlPart.setContent(content, "text/html;charset=gbk");
    			contentMultipart.addBodyPart(htmlPart);
    			//附件部分
    			MimeBodyPart excelBodyPart=new MimeBodyPart();
    			DataSource dataSource=new ByteArrayDataSource(inputstream, "application/excel");
                DataHandler dataHandler=new DataHandler(dataSource);
                excelBodyPart.setDataHandler(dataHandler);
                excelBodyPart.setFileName(MimeUtility.encodeText("通知.xls"));
    //			excelBodyPart.setDataHandler(new DataHandler(fileDs));
    //			excelBodyPart.setFileName(fileDs.getName());
    //			excelBodyPart.setContentID("excel");
    			contentMultipart.addBodyPart(excelBodyPart);
    			contentPart.setContent(contentMultipart);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return contentPart;
    	}
    	
    	//用户名密码验证,需要实现抽象类Authenticator的抽象方法PasswordAuthentication
        static class MyAuthenricator extends Authenticator{  
            String u = null;  
            String p = null;  
            public MyAuthenricator(String u,String p){  
                this.u=u;  
                this.p=p;  
            }  
            @Override  
            protected PasswordAuthentication getPasswordAuthentication() {  
                return new PasswordAuthentication(u,p);  
            }  
        }
        
    }

     

    测试类:

    package com.yx.mail;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    
    @Controller
    @Scope(value = "prototype")
    public class TestMain extends BaseController{
    
    	private Logger logger = LogManager.getLogger(TestMain.class);
    	@Autowired 
    	private SendEmailService sendEmailService;
    	@RequestMapping(value = "/mail", method = RequestMethod.GET)
    	@ResponseBody
    	public String sendEmail() {
    		
    		List<Order> rechecklist = new ArrayList();
    		Order Order1 = new Order();
    		Order1.setOrderNo("1");
    		Order1.setProvinceId("黑龙江");
    		Order Order2 = new Order();
    		Order2.setOrderNo("2");
    		Order2.setProvinceId("吉林");
    		Order Order3 = new Order();
    		Order3.setOrderNo("3");
    		Order3.setProvinceId("辽宁");
    		Order Order4 = new Order();
    		Order4.setOrderNo("4");
    		Order4.setProvinceId("福建");
    		rechecklist.add(Order1);rechecklist.add(Order2);rechecklist.add(Order3);rechecklist.add(Order4);
    		
    		
    		
    		LinkedHashMap<String, String> recheckMap = new LinkedHashMap<>();
    		recheckMap.put("provinceId", "省份");
    		recheckMap.put("orderNo", "订单号");
    		
    		try {
    			ByteArrayOutputStream baos = JxlUtil.listToExcelReturnOut(rechecklist, recheckMap, "test", "testexport", 0, 0, request,
    					response);
    			ByteArrayInputStream InputStream = new ByteArrayInputStream(baos.toByteArray());
    			String email = MailConfig.acceptAddress;//接收人
    			String copyEmail = MailConfig.acceptAddressOther;//抄送多人以逗号分隔
    			String title = "XX通知";
    			String context = "当前系统存在"+rechecklist.size()+"条需要处理的订单。详情请留意附件。";
    			sendEmailService.sendMsgFileDs(email,copyEmail,title,context,InputStream);
    //			file.deleteOnExit();
    		} catch (Exception e) {
    			logger.info(e.getMessage());
    			logger.info("【MailNoticeController】sendEmail 异常");
    		}
    		
    		return null;
    	}
    }

     

    展开全文
  • Secret Shield Encryption是国外的一款非常出色的文件加密工具。软件功能强大,它依赖于PGP不对称公钥基础设施,这被认为是保护信息的最佳途径之一。除了提供强大的加密算法保护数据和争夺纯文本的可能性,SSE同时也...
  • 最近朋友小A向我求助:因为工作需要常常需要往国外发送数百兆甚至接近1G的超大文件。试了十多种途径都不满意,国内的可以发送超大附件的网站(如QQ邮箱,各种网盘)不支持英文界面,外国朋友看不懂。而WeTransfer这种...

    最近朋友小A向我求助:因为工作需要常常需要往国外发送数百兆甚至接近1G的超大文件。试了十多种途径都不满意,国内的可以发送超大附件的网站(如QQ邮箱,各种网盘)不支持英文界面,外国朋友看不懂。而WeTransfer这种免费Web端传输又不支持断点续传,有时传了一个小时断线了。苦于找不到一个英文版、免费(或低价)、超大文件传输服务,你帮我出出主意。

    因为从事IT工作,接触过不少文件传输软件,所以很快给小A支了个招儿。现在贴出来,希望对有同样困扰的同学有所帮助↓↓↓

    国际链路上的文件传输的确是个老大难的问题,距离远、线路差、网络抖动不断、时而网络中断等等问题接踵而来。

    接收来自国际友人的超大文件时,顶着300毫秒的延迟以300KB/s的速度下载了1个小时,正当此时遭遇连接中断,需要友人重新发送邮件,那滋味真真是相当酸爽的。

    支持远距离超大文件传输的产品,今年来应该是出现了很多的,国内外的也都有。其中支持大文件传输和跨国传输性能好、支持中英文、免费低价的,也有几个。这里推荐一个邮件大附件的产品,叫作飞驰云,可多平台使用、支持多语言,选择个人用户注册,可以一直免费使用,应该能满足要求了。

    飞驰云发带超大附件的邮件时,可单独安装浏览器插件进行文件传输,也可以直接使用浏览器来传输,都支持多文件、多线程传输,并可以断点续传,还能支持加密、压缩等操作,邮件可直接通知到国外客户的私人邮箱里,确实相当方便。

    转载于:https://blog.51cto.com/14119107/2347945

    展开全文
  • NULL 博文链接:https://xiaoa7.iteye.com/blog/695783
  • 在看论文的时候或是看英文文件的时候,按Ctrl+C就可以快速帮你到Google翻译或是Yahoo翻译查字典 使用Google翻译 使用Yahoo翻译 @查询过的单字还可以汇出帮您做记录 执行档下载 License PaperAss is Copyright :...
  • 安装环境 python 3.5 PyQt5==5.15.1 pywin32==228 代码 很多人学习python,不知道从何学起。...很多人学习python,掌握了基本...思路:将要发送的内容保存到剪切板,激活相应的窗口,再使用C-v黏贴到窗口中,A-s发送
  • 转载网上摘录在使用MATLAB遇到问题时在网上搜索到很多有用的知识比起看帮助文件英文要省力的多了 matlab文件操作 文件操作是一种重要的输入输出方式即从数据文件读取数据或将结果写入数据文件MATLAB提供了一系列低...
  • python socket基于TCP的文件传输程序

    千次阅读 2019-08-01 15:41:33
    python socket基于TCP的文件传输程序
  • 最近朋友小A向我求助:因为工作需要常常需要往国外发送数百兆甚至接近1G的超大文件。试了十多种途径都不满意,国内的可以发送超大附件的网站(如QQ邮箱,各种网盘)不支持英文界面,外国朋友看不懂。而WeTransfer这种...
  • 3.可选文件(聊天中的文件、收藏中的文件、存储)是否正常显示 文件格式测试: 1.上传文件为txt文本 2.上传文件为图片(jpg/png/jpeg) 3.上传文件为word(后缀为docx/doc) 4.上传文件为pdf 5.上传文件为音频...
  • 关于Android或Java的Http get,post请求的例子和做法还是很多的,本人在项目中没有使用第三方的类库,利用了Android原生类库HttpURLConnection做了一次文件上传,代码逻辑不复杂,就是要理解Http协议的过程和耐心+...
  • 模拟的POST请求也一样。但有时可能模拟POST数据格式不是很标准(可能吧,没太细研究),在...基本上都是英文数字符号等,如有中文发送之前可做一下编码,这样基本上可以确保不会因编码问题造成计算失误(英文字符各编码
  • - 发送文件的邮箱在kindle的信任邮箱列表中。像这样: - 邮件确实发送成功了。像这样: - kindle连了网了二、关于qq邮箱其实上面说的都不重要。 QQ邮箱有一个自定义英文邮箱名称的功能。
  • 如果您在Github上阅读了此文件:请不要在此处发送请求请求。 所有将自动关闭。 任何代码建议都应转到存储库。 这是基于Tk库的新版本。 有关程序的稳定版本,请 特征 默认为两列模式或一列模式:一列始终显示文件和...
  • QQ传文件测试用例

    千次阅读 2019-07-17 15:58:35
    QQ传文件测试用例 传输成功 1、文件直接拖到对话框,点击发送 2、点击传送文件按钮,选择文件,点击发送 3、传送汇总显示进度条 4、传送显示文件名字,以及文件大小 5、给一个用户传输多个文件 6、同时给不同用户...
  • JAVA实现FTP文件传输

    千次阅读 2017-12-06 10:28:18
    FTP是File Transfer Protocol(文件传输协议)的英文简称,即文件协议。用于Internet上的控制文件的双向传输。同时,它是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有的应用程序都...
  • 之前在使用filezilla传输文件时显示了下面的这种错误。 经过查资料,这里记录下解决方案。 1、这个原因时由于在Linux 端...4、将其改为YES即可,至于其他选项感兴趣的可以自己尝试根据英文介绍修改 最后附上参考地...
  • –通过蓝牙(OBEX)发送文件 –图片缩略图 –并排两个面板,或虚拟两个面板模式 – 书签 –目录历史 –可以直接从 LAN,WebDAV 和云插件直接流式传输的媒体播放器 –可配置的按钮栏,用于更改目录,内部命令,启动...
  • 问题描述:发送压缩文件到qq邮箱,发现标题为中文名称,能正常显示,但是附件的中文名称为乱码。 任务:解决附件中文名称的乱码问题。 前期资料总结: 1、SMTP乱码解决方案(源自...
  • SecureCRT 上传文件

    万次阅读 2019-04-13 15:51:25
    用SecureCRT来上传和下载文件 1.在使用SecureCRT上传下载之前需要给服务器安装lrzsz: 2、命令sz、rz的使用方法: 3、设置上传、下载文件的默认目录 二、使用TFP上传 一.用SecureCRT来上传和下载文件 1.在...
  • 网页上文件的上传和下载

    千次阅读 2020-01-22 20:38:44
    文件的上传和下载在web应用中是非常常用,也是非常有用的功能。 ...例如:发送电子邮件时可以同过上传附件发送文件,OA系统中可以通过上传文件来提交公文,社交网站通过上传图片来自定义头像等等。
  • 我知道如何发送到桌面快捷方式,对eclipse.eve点右键→发送到→桌面,没有快捷方式这四个字。看到桌面上有eclipse图标但是左下角没有快捷方式的标志...我想知道如何发送到桌面快捷方式,不然每次都要压缩文件。。。...
  • 批量自动重命名文件中文转英文

    千次阅读 2017-03-21 15:41:00
    例如:主页.png,背景.png 一些中文的资源文件想导入项目里需要一个一个的重命名。 先给大家看下效果, 以上图片是处理前的 以下图片是处理过程 以下是处理结果 最近在做android开发的时候,切...
  • 支持 危险文件扫描、ipc 查询、中英文翻译、批量缩图、邮件快速备份文件到邮箱、简易探针 只有一个文件 方便上传 携带 初始密码:000000 上传后请及时修改 服务器探针 支持 编辑 UTF8(测试工作没有完成 不保证...
  • 文件系统

    万次阅读 多人点赞 2018-09-05 09:17:21
    操作系统层:即文件系统,操作系统如何将各个硬件管理并对上提供更高层次接口; 单机引擎层:常见存储系统对应单机引擎原理大概介绍,利用文件系统接口提供更高级别的存储系统接口; 分布式层:如何将多个...
  • 例如:主页.png,背景.png 一些中文的资源文件想导入项目里需要一个一个的重命名。 最近在做android开发的时候,切得图片全都是这样的,而且都是三套图,没套图如果手动改需要花不少时间。而且最坑的是忽然有一套...
  • 准备工作 ...1、文件上传 我是上传封装起来的,方便调用,直接上代码 public static void uploadFile(String filePath, String fileName, MultipartFile multipartFile) throws Exception { F

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,417
精华内容 77,766
关键字:

发文件英文