java smtp.126.com_Java采用SMTP协议发送邮件 | 学步园
下载后解压,将mail.jar和activation.jar放到project里的lib文件夹中,为其配置环境变量,或在myEclipse里的"Java Build Path"中将其添加到"Libraries"。
project里有三个类:入口类(TestJavaMail)、邮件信息类(MailBean)和发送邮件类(SendMail)
MailBean.java
packagetest3;
importjava.util.Vector;
publicclassMailBean{
privateString to;//收件人privateString from;//发件人privateString host;//SMTP主机privateString username;//发件人的用户名privateString password;//发件人的密码privateString subject;//邮件主题privateString content;//邮件正文Vectorfile;//多个附件privateString filename;//附件的文件名publicString getTo(){
returnto;
}
publicvoidsetTo(String to){
this.to=to;
}
publicString getFrom(){
returnfrom;
}
publicvoidsetFrom(String from){
this.from=from;
}
publicString getHost(){
returnhost;
}
publicvoidsetHost(String host){
this.host=host;
}
publicString getUsername(){
returnusername;
}
publicvoidsetUsername(String username){
this.username=username;
}
publicString getPassword(){
returnpassword;
}
publicvoidsetPassword(String password){
this.password=password;
}
publicString getSubject(){
returnsubject;
}
publicvoidsetSubject(String subject){
this.subject=subject;
}
publicString getContent(){
returncontent;
}
publicvoidsetContent(String content){
this.content=content;
}
publicString getFilename(){
returnfilename;
}
publicvoidsetFilename(String filename){
this.filename=filename;
}
publicVectorgetFile(){
returnfile;
}
publicvoidattachFile(String fileName){
if(file==null)
file=newVector();
file.addElement(fileName);
}}
SendMail.java
packagetest3;
importjava.util.Date;
importjava.util.Enumeration;
importjava.util.Properties;
importjava.util.Vector;
importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Authenticator;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassSendMail{
publicString toChinese(String text){
try{
text=MimeUtility.encodeText(newString(text.getBytes(),"GB2312"),"GB2312","B");
}catch(Exception e){
e.printStackTrace();
}returntext;
}
publicbooleansendMail(MailBean mb){
String host=mb.getHost();
finalString username=mb.getUsername();
finalString password=mb.getPassword();
String from=mb.getFrom();
String to=mb.getTo();
String subject=mb.getSubject();
String content=mb.getContent();
String fileName=mb.getFilename();
Vectorfile=mb.getFile();
Properties props=System.getProperties();
props.put("mail.smtp.host", host);//设置SMTP的主机props.put("mail.smtp.auth","true");//需要经过验证 Session session=Session.getInstance(props,newAuthenticator(){
publicPasswordAuthentication getPasswordAuthentication(){
returnnewPasswordAuthentication(username, password);
} });
try{
MimeMessage msg=newMimeMessage(session);
msg.setFrom(newInternetAddress(from));
InternetAddress[] address={newInternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(toChinese(subject));
Multipart mp=newMimeMultipart();
MimeBodyPart mbpContent=newMimeBodyPart();
mbpContent.setText(content);
mp.addBodyPart(mbpContent);
/*往邮件中添加附件*/ Enumerationefile=file.elements();
while(efile.hasMoreElements()){
MimeBodyPart mbpFile=newMimeBodyPart();
fileName=efile.nextElement().toString();
FileDataSource fds=newFileDataSource(fileName);
mbpFile.setDataHandler(newDataHandler(fds));
mbpFile.setFileName(toChinese(fds.getName()));
mp.addBodyPart(mbpFile);
}
msg.setContent(mp);
msg.setSentDate(newDate());
Transport.send(msg);
}catch(MessagingException me){
me.printStackTrace();
returnfalse;
}returntrue;
}
}
TestJavaMail.java
packagetest3;
publicclassTestJavaMail{
publicstaticvoidmain(String[] args){
MailBean mb=newMailBean();
mb.setHost("smtp.163.com");//设置SMTP主机(163),若用126,则设为:smtp.126.commb.setUsername("linyiteng1220");//设置发件人邮箱的用户名mb.setPassword("******");//设置发件人邮箱的密码,需将*号改成正确的密码mb.setFrom("linyiteng1220@163.com");//设置发件人的邮箱mb.setTo("linyiteng1220@126.com");//设置收件人的邮箱mb.setSubject("测试_JavaMail");//设置邮件的主题mb.setContent("本邮件中包含三个附件,请检查!");//设置邮件的正文 mb.attachFile("E:/工作报告(林乙腾).doc");//往邮件中添加附件mb.attachFile("E:/test.txt");
mb.attachFile("E:/test.xls");
SendMail sm=newSendMail();
System.out.println("正在发送邮件...");
if(sm.sendMail(mb))//发送邮件System.out.println("发送成功!");
else System.out.println("发送失败!");
}
}
如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
解决方法:移除myEclipse自带的EE包
。
但你可能还需要用到EE包里的servlet相关类,那可以从Tomcat的lib文件夹中复制servlet-api.jar到project中,用它来代替EE包,一切OK!
另外,个人测试时发现无法通过新注册的网易邮箱来发邮件,以前旧的就没有问题,不知道是什么原因。
如果要通过gmail发邮件的话,请在代码Properties props = System.getProperties();后再添加以下两行代码:
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable","true");
搞定!
如果存在缺漏和问题,请大家指正!
java smtp.126.com_Java采用SMTP协议发送邮件 | 学步园相关推荐
- java smtp.126.com_Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程
转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送 ...
- java oval_Java对象校验框架Oval怎么使用 | 学步园
OVal是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs进行设定.可以使用纯Java语言.JavaScript.Groovy.BeanShell等进 ...
- java有关地址的讲解_Java迭代器讲解 | 学步园
迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...
- java 正则 栈溢出_关于Java正则引起的StackOverFlowError问题以及解决方案 | 学步园...
java 正则异常 java.lang.StackOverflowError: 在使用正则表达式的时候,底层是通过迭代方式执行的,每一层的迭代都会在栈线程的大小中占一定内存,如果迭代的层次很多,就会报 ...
- supermap iserver java 6r许可_SuperMap iserver Java 6R 在 linux 上安装和配置 | 学步园
一.安装JDK 1.进入到放置JDK目录下 输入命令:./jdk-6u14-linux-i586.bin 开始安装jdk ,安装的时候会让你输入yes (如果提示你权限不够的话 可以输入命令:chmo ...
- java md5加密解密_java MD5加密解密 | 学步园
package com.md5; /** * @author 作者 E-mail: chenshaohua2012@126.com * @version 创建时间:2012-11-6 下午3:29:4 ...
- java狗叫_java学习(8) | 学步园
本讲内容:成员变量.方法.方法的重载.构造函数 一.用程序讲解小白的故事 小白是一条狗,它心情好的时候会恭喜人发财,它心情差的时候会对路人撒野,吓得路人落荒而逃.下面我们用面向对象的方式用程序讲述一下 ...
- java console清屏_JAVA 控制台清屏 | 学步园
看到网上有人讨论Java如何实现对控制台清屏,看到的内容不是很理想.所以把这些内容总结一下. 直观一点,先看下代码吧 import static java.lang.System.out; /** * ...
- java bean命名规范_JavaBean 成员命名规范 | 学步园
在eclipse中自动生成setters()和getters() User.java private boolean active ; //getter() public boolean isActi ...
最新文章
- 脑电分析系列[MNE-Python-1]| MNE-Python详细安装与使用(更新)
- 为什么 Kafka 如此之快?
- 摄像头poe供电原理_poe供电摄像头有哪些优缺点
- Android性能优化之内存篇
- linux在多个目录跳转,如何做到在多个目录直接游刃有余的进行切换 -- linux 下的目录切换...
- winrar 去广告_解压缩工具之WinRAR下载安装教程
- python天气查询_Python学习笔记——天气查询代码
- springboot实战pdf_Java程序员中秋节福利发送:Spring boot+Redis实战文档「PDF」
- java导出excel 客户端_java如何将导出的excel下载到客户端
- 基于HTTP构建YUM网络源实战
- ABAP中的枚举对象
- 笑哭了!日本网友求助如何卸载360浏览器,过程堪比“ 拆弹 ”...
- 全民健身下的体育消费,是怎么升级的?
- 【三维地图】开发攻略 —— 详解“GeoJSON”技术和应用场景
- 原生滑动选择器 html,html选择器
- 企业级负载均衡LVS集群——DR模式下的(加权)轮询调度器、DR模式下的健康检测(ldirectord)
- MySQL数据存储空间
- [P14-v19]自己做一台 Hifi 耳放,全分立的!
- 电脑连不上手机热点了
- C++_enhance-Record11—异常的层次结构(继承在异常中的应用)