可以直接复制代码使用,注意:使用的是126邮箱,要加入的包,主要是:activation.jar,mail.jar,并且要删除原来myeclipe里面的javaee5 library
然后添加里面的javaee.jar包到lib下面即可。
package com.tl.util;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* 发送邮件
* @author Administrator
*
*/
public class SendMail {
static int port = 25;
static String server = "smtp.126.com"; //发件人使用发邮件的电子信箱服务器
static String from = "Admin<>"; //显示你的发件人 像这样的
static String user = ""; //邮箱名
static String password = "xxxx"; //邮箱密码
public static void sendEmail(String email, String subject, String body,String filename) {
try {
Properties props = new Properties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", String.valueOf(port));
props.put("mail.smtp.auth", "true");
Transport transport = null;
Session session = Session.getDefaultInstance(props, null);
transport = session.getTransport("smtp");
transport.connect(server, user, password);
MimeMessage msg = new MimeMessage(session);
msg.setSentDate(new Date());
InternetAddress fromAddress = new InternetAddress(from);
msg.setFrom(fromAddress);
InternetAddress[] toAddress = new InternetAddress[1];
toAddress[0] = new InternetAddress(email);
msg.setRecipients(Message.RecipientType.TO, toAddress);
msg.setSubject(subject, "UTF-8");
MimeMultipart multi = new MimeMultipart();
BodyPart textBodyPart = new MimeBodyPart(); //第一个BodyPart.主要写一些一般的信件内容。
textBodyPart.setText(body);
// 压入第一个BodyPart到MimeMultipart对象中。
multi.addBodyPart(textBodyPart);
FileDataSource fds = new FileDataSource(filename); //必须存在的文档,否则throw异常。
BodyPart fileBodyPart = new MimeBodyPart(); //第二个BodyPart
fileBodyPart.setDataHandler(new DataHandler(fds)); //字符流形式装入文件
fileBodyPart.setFileName("report.txt"); //设置文件名,可以不是原来的文件名。
multi.addBodyPart(fileBodyPart);
// MimeMultPart作为Content加入message
msg.setContent(multi);
msg.setFileName(filename);
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
//测试
public static void main(String[] args) {
sendEmail("LOVE YOU","哈哈! 才做好的,这个是带附件的,我是来测试做的,收到邮件请回我,是否有附件呢?","d:/a.txt");
}
}
发送邮件的原理:
1,邮件服务器:现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。这些服务器类似于我们的邮局。它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。
2,电子邮箱:就是我们通常说的E-mail地址,确切的说就是我们在邮件服务器上面申请的一个账号,邮件服务器就会为该帐号分配一定的空间,从而就可以使用了。
3,SMTP协议:(Simple Mail Transfer Protocal)称为简单邮件传输协议,可以说是一种通讯规则,监听25号端口,重要特点:邮件可以通过不同网络上的主机接力式传送。
详情:http://baike.baidu.com/view/5450.htm
4.POP协议简介
POP的全称是 Post Office Protocol ,即邮局协议,用于电子邮件的接收,它使用TCP的110端口,现在常用的是第三版,所以简称为 POP3。
采用的cs模式
5.IMAP协议简介
IMAP是Internet Message Access Protocol的缩写,邮件下载服务,可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
doc下面发送邮件:
1,smtp方式
开始---->运行---->cmd---->回车<enter> ---------注:<enter>就是回车的意思
telnet smtp.qq.com 25<enter>----------呼叫服务器
ehlo guoqianfang<enter> ---------------主机的用户名
auth login<enter>
YWFh<enter> --------------发送者账号的名字(必须是加密过的)
YmJiYg==<enter> ---------------发送者账户的密码(必须是加密过的)
mail from:<aaa@qq.com><enter> ----------发送者的邮箱地址
rcpt to:<bbbb@qq.com><enter> -----------接受者的邮箱地址
data<enter> -------------下面是信的内容
你好 !我是郭倩芳。<enter> ---------信的内容
.<enter> ---------“.”代表信结束
quit<enter> -----------退出
2,用pop放松
查看邮件:
telnet pop.qq.com 110 ---------呼叫服务器
user bbbb -------------发送者账号的名字
pass 111111 ----------发送者账户的密码
stat ------------统计邮件
list -------------------邮件列表
retr 序号------------------查看哪个邮件的内容
注意在window7下面要telnet默认是没有开启的,需要手动设置:开始---》控制面板---》程序----》打开或关闭Windows功能--》
如图选中Telnet客服端。就可以运行上面的命令了。
这样就可以做注册的时候,验证邮箱了。