`
lucky_god
  • 浏览: 36372 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
smtp邮件发送 java http://www.codefans.net/articles/209.shtml
package com.povodo.cloud.modules.test;

/**
 * 有ssl错误要加上 props.put("mail.smtp.starttls.enable", "true");
 * Created by lucky god on 6/12/29.
 */

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

public class Mail {
    private MimeMessage mimeMsg;
    private Session session;
    private Properties props;
    private String username;
    private String password;
    private Multipart mp;

    public Mail(String smtp) {
        setSmtpHost(smtp);
        createMimeMessage();
    }

    public void setSmtpHost(String hostName) {
        System.out.println("设置系统属性:mail.smtp.host=" + hostName);
        if (props == null) {
            props = System.getProperties();
        }
        props.put("mail.smtp.host", hostName);
    }

    public boolean createMimeMessage() {
        try {
            System.out.println("准备获取邮件会话对象!");
            session = Session.getDefaultInstance(props, null);
        } catch (Exception e) {
            System.out.println("获取邮件会话错误!" + e);
            return false;
        }
        System.out.println("准备创建MIME邮件对象!");
        try {
            mimeMsg = new MimeMessage(session);
            mp = new MimeMultipart();
            return true;
        } catch (Exception e) {
            System.out.println("创建MIME邮件对象失败!" + e);
            return false;
        }
    }

    /*定义SMTP是否需要验证*/
    public void setNeedAuth(boolean need) {
        System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
        if (props == null)
            props = System.getProperties();
        if (need) {
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.starttls.enable", "true");

        } else {
            props.put("mail.smtp.auth", "false");
        }
    }

    public void setNamePass(String name, String pass) {
        username = name;
        password = pass;
    }

    /*定义邮件主题*/
    public boolean setSubject(String mailSubject) {
        System.out.println("定义邮件主题!");
        try {
            mimeMsg.setSubject(mailSubject);
            return true;
        } catch (Exception e) {
            System.err.println("定义邮件主题发生错误!");
            return false;
        }
    }

    /*定义邮件正文*/
    public boolean setBody(String mailBody) {
        try {
            BodyPart bp = new MimeBodyPart();
            bp.setContent("" + mailBody, "text/html;charset=GBK");
            mp.addBodyPart(bp);
            return true;
        } catch (Exception e) {
            System.err.println("定义邮件正文时发生错误!" + e);
            return false;
        }
    }

    /*设置发信人*/
    public boolean setFrom(String from) {
        System.out.println("设置发信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from)); //发信人
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /*定义收信人*/
    public boolean setTo(String to) {
        if (to == null)
            return false;
        System.out.println("定义收信人!");
        try {
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /*定义抄送人*/
    public boolean setCopyTo(String copyto) {
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.CC, (Address[]) InternetAddress
                    .parse(copyto));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /*发送邮件模块*/
    public boolean sendOut() {
        try {
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("邮件发送中....");
            Session mailSession = Session.getInstance(props, null);
            Transport transport = mailSession.getTransport("smtp");
            transport.connect((String) props.get("mail.smtp.host"), username, password);
            transport.sendMessage(mimeMsg, mimeMsg
                    .getRecipients(Message.RecipientType.TO));
            System.out.println("发送成功!");
            transport.close();
            return true;
        } catch (Exception e) {
            System.err.println("邮件失败!" + e);
            return false;
        }
    }

    /*调用sendOut方法完成发送*/
    public static boolean sendAndCc(String smtp, String from, String to, String copyto,
                                    String subject, String content, String username, String password) {
        Mail theMail = new Mail(smtp);
        theMail.setNeedAuth(true); // 验证
        if (!theMail.setSubject(subject))
            return false;
        if (!theMail.setBody(content))
            return false;
        if (!theMail.setTo(to))
            return false;
        if (!theMail.setCopyTo(copyto))
            return false;
        if (!theMail.setFrom(from))
            return false;
        theMail.setNamePass(username, password);
        if (!theMail.sendOut())
            return false;
        return true;
    }

    public static void main(String[] args) {
        String smtp = "smtp.qq.com";// smtp服务器
        String from = "785080472@qq.com";// 邮件显示名称
        String to = "1101155715@qq.com";// 收件人的邮件地址,必须是真实地址
        String copyto = "";// 抄送人邮件地址
        String subject = "测试邮件";// 邮件标题
        String content = "你好!";// 邮件内容
        String username = "785080472";// 发件人真实的账户名
        String password = "cmpqtgdrzcgsbfae";// 发件人密码,qq需要授权码
        Mail.sendAndCc(smtp, from, to, copyto, subject, content, username, password);
    }
    
}
JSTL字符串连接 jstl
${not empty user.wxName ? '('.concat(user.wxName).concat(')'):''}
linux ntfs-3g支持 ntfs http://www.tuxera.com/community/open-source-ntfs-3g/
安装依赖:
yum -y install gcc*
下载支持包:
wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2016.2.22.tgz

安装:
tar -zxvf 〈文件名〉

之后,进入目录,执行
./configure
make
make install
make clean
javascript中文从ArrayBuffer存入取出 javascript, arraybuffer http://zhidao.baidu.com/question/1048518532467599699
function char2buf(str){
    var out = new ArrayBuffer(str.length*2);
    var u16a= new Uint16Array(out);
    var strs = str.split("");
    for(var i =0 ; i<strs.length;i++){
        u16a[i]=strs[i].charCodeAt(0);
    }
    return out;
}

function buf2char(buf){
    var out="";
    var u16a = new Uint16Array(buf);
    var single ;
    for(var i=0 ; i < u16a.length;i++){
        single = u16a[i].toString(16);
        while(single.length<4) single = "0".concat(single);
        out+="\\u"+single;
    }
    return eval("'"+out+ "'");
}
mysql按in函数匹配的顺序排序 mysql http://blog.csdn.net/wwwyuanliang10000/article/details/37660545
sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);
JS 弹出框接收用户输入数据 js http://yuncode.net/code/c_50bb52cbe9f921
var port = window.prompt("请输入新的监听端口号","");
jquery validate自定义验证规则 验证, jquery http://www.runoob.com/try/tryit.php?filename=jquery-plugin-custom-methods
绑定到输入框中是与input的name对应
jquery.validate自定义验证 html, validate http://wwwzhouhui.iteye.com/blog/1068451
function addValidate(){
	jQuery.validator.addMethod("mobile", function(value, element) {  
	     var length = value.length;     
	     var mobile = /^1[3|5|8]\d{9}$/;
	     return mobile.exec(value);
	 }, "请正确填写手机号码");
}
页面显示HTML标签内容,超出后省略显示 html, 标签内容, 省略显示 http://blog.csdn.net/dannywj1371/article/details/8127778
style样式为:
.overflow-text{max-width:250px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}

HTML:
<xmp class='overflow-text' title="<IpmsNotification type="CheckOut">
  <RoomNo>306</RoomNo>
  <RoomTypeName>缤纷电脑房</RoomTypeName>
  <RoomBuildingName>峰景主楼</RoomBuildingName>
  <RoomBuildingCode>1</RoomBuildingCode>
  <RoomFloorName>三楼</RoomFloorName>
  <RoomFloorCode>3</RoomFloorCode>
  <CheckInTime>2015-08-21 17:57:13</CheckInTime>
  <CheckOutTime>2015-08-22 10:35:24</CheckOutTime>
  <CheckOutRoom>true</CheckOutRoom>
  <GuestInfo>
    <Id>P1508211757104009577LSGQ</Id>
    <GuestName>房贷首付</GuestName>
    <IDCardNo/>
    <IDCardTypeId>40</IDCardTypeId>
    <Nationality/>
    <Gender>0</Gender>
    <Salutation>先生</Salutation>
    <Birthday/>
    <Address/>
    <CityCode>100000</CityCode>
    <ProvinceCode>geo.cn.bj</ProvinceCode>
    <CountryCode>geo.cn</CountryCode>
    <VisaNo/>
    <VisaTypeId/>
    <VisaValid/>
  </GuestInfo>
</IpmsNotification>"><IpmsNotification type="CheckOut">
  <RoomNo>306</RoomNo>
  <RoomTypeName>缤纷电脑房</RoomTypeName>
  <RoomBuildingName>峰景主楼</RoomBuildingName>
  <RoomBuildingCode>1</RoomBuildingCode>
  <RoomFloorName>三楼</RoomFloorName>
  <RoomFloorCode>3</RoomFloorCode>
  <CheckInTime>2015-08-21 17:57:13</CheckInTime>
  <CheckOutTime>2015-08-22 10:35:24</CheckOutTime>
  <CheckOutRoom>true</CheckOutRoom>
  <GuestInfo>
    <Id>P1508211757104009577LSGQ</Id>
    <GuestName>房贷首付</GuestName>
    <IDCardNo/>
    <IDCardTypeId>40</IDCardTypeId>
    <Nationality/>
    <Gender>0</Gender>
    <Salutation>先生</Salutation>
    <Birthday/>
    <Address/>
    <CityCode>100000</CityCode>
    <ProvinceCode>geo.cn.bj</ProvinceCode>
    <CountryCode>geo.cn</CountryCode>
    <VisaNo/>
    <VisaTypeId/>
    <VisaValid/>
  </GuestInfo>
</IpmsNotification></xmp>
二维数组按列循环与按行循环区别 java, 算法
import java.util.Date;


public class ForTest {
	
	public int[][] getArray(int row, int column){
		int a[][] = new int[row][column];
		for(int i = 0;i < row;i++){
			for(int j = 0;j < column;j++){
				a[i][j] = i*j;
			}
		}
		return a;
	}
	
	public int computeInRow(int [][] a){
		int count = 0;
		for(int i = 0;i < a.length;i++){
			for(int j = 0;j < a[i].length;j++){
				count += a[i][j];
			}
		}
		return count;
	}
	
	public int computeInColumn(int [][] a){
		int count = 0;
		for(int j = 0;j < a[0].length;j++){
			for(int i = 0;i < a.length;i++){
				count += a[i][j];
			}
		}
		return count;
	}
	
	public static void main(String[] args) {
		ForTest test = new ForTest();
		int [][] a = test.getArray(1000, 5000);
		System.out.println("开始计算...");
		
		long beginTime = new Date().getTime();
		int count = test.computeInRow(a);
		long endTime = new Date().getTime();
		System.out.println("按行获取数据计算结果为:"+count+",用时:"+(endTime-beginTime)+"ms");
		
		 beginTime = new Date().getTime();
		 count = test.computeInColumn(a);
		 endTime = new Date().getTime();
		System.out.println("按列获取数据计算结果为:"+count+",用时:"+(endTime-beginTime)+"ms");
		
		System.out.println("计算结束...");
	}
//	以上2段代码差别只有for循环的顺序,但是局部性却相差了很多。我们知道数组在内存中是按照行的顺序来存储的。
//	但是computeInColumn确实按列去访问,这可能就导致缓存不命中(需要的数据并不在Cache中,因为Cache存储的是连续的内存数据,
//	而computeInColumn访问的是不联系的),也就降低了程序运行的速度。
}
获取本机的ip地址 ip地址
String ipaddress = InetAddress.getLocalHost().getHostAddress();

还有一种
StringBuilder IFCONFIG=new StringBuilder();  
		   try {  
		       for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {  
		           NetworkInterface intf = en.nextElement();  
		           for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {  
		               InetAddress inetAddress = enumIpAddr.nextElement();  
		               if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress() && inetAddress.isSiteLocalAddress()) {  
		               IFCONFIG.append(inetAddress.getHostAddress().toString()+",");  
		               }  
		  
		           }  
		       }  
		   } catch (SocketException ex) {  
		   }
		   renderHtml(IFCONFIG.toString());
让标签文字溢出自动换行 html http://bbs.csdn.net/topics/380250090
word-break:break-word;
保留两位小数 小数点保留 http://blog.csdn.net/wamlko/article/details/24641187
var area = parseFloat(0.0061*height+0.0124*weight-0.0099);
$("#area").val(area.toFixed(2));
dos导出mysql数据库 mysql, 导出 如何时将远程服务器MYSQL数据库导出,导入
CD D:\Program Files\MySQL\MySQL Server 5.0\bin>  切换到mysql安装目录的bin下
mysqldump -h[hosname] -u[user_name] -p[password] --default-character-set=[char_set_name] [db_name] > [save_path]

例:然后输入:mysqldump -h119.12.12.11 -umysqluser -pmysqlpwd --default-character-set=utf8 dbname --skip-lock-tables> d:\sqlname.sql

119.12.12.11为远程服务器IP,-umysqluser mysqluser为数据库用户名,-pmysqlpwd mysqlpwd 为用户密码,set=utf8为导出MYSQL的编码格式,dbname为要导出的数据库名,>d:\sqlname.sql 为导入到你本地的存放路径,aspchina_net.sql你可以自由命名!
java WEB下载文件 中文文件名乱码处理 java, 中文文件名, 乱码 java web应用文件下载(包括中文文件名乱码处理)
fileName = java.net.URLEncoder.encode(fileName,"UTF-8");
if(fileName.length()>150)//解决IE 6.0 bug
fileName=new String(fileName.getBytes("GBK"),"ISO-8859-1");

resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/octet-stream");
用EL表达式获取jsp的url参数 el表达式, jsp, url参数 请问el表达式不能取出url中的参数value值吗?
<input type="hidden" name="branchId" value="${param.branchId}"/>
Global site tag (gtag.js) - Google Analytics