package org.lazyzhong.test;
import java.util.Properties;
public class MailSenderInfo {
//发送邮件的服务器的ip和端口
private String mailServerHost;
private String mailServerPort;
//用户名和密码
private String username;
private String password;
//主题和内容
private String subject;
private String content;
//发送和接收者
private String fromAddress;
private String toAddress;
//是否需要验证
private boolean validate;
//附件名
private String[] attachFileNames;
public Properties getProperties(){
Properties p=new Properties();
p.put("mail.smtp.host",this.mailServerHost);
p.put("mail.smtp.port",this.mailServerPort);
p.put("mail.smtp.auth",validate?"true":"false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] attachFileNames) {
this.attachFileNames = attachFileNames;
}
public MailSenderInfo() {
super();
}
}
package org.lazyzhong.test;
import javax.mail.*;
public class MyAuthenticator extends Authenticator{
String userName=null;
String password=null;
public MyAuthenticator(){
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
}
package org.lazyzhong.test;
import java.util.Properties;
package org.lazyzhong.test;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Message.RecipientType;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SimpleMailSender {
//简单文本
public boolean sendText(MailSenderInfo mailInfo) throws Exception{
MyAuthenticator authen=null;
Properties p=mailInfo.getProperties();
if(mailInfo.isValidate()){
authen=new MyAuthenticator(mailInfo.getUsername(),mailInfo.getPassword());
}
//根据权限判断和配置信息生成会话
Session session=Session.getDefaultInstance(p,authen);
//根据会话生成消息
Message message=new MimeMessage(session);
Address fromAddress=new InternetAddress(mailInfo.getFromAddress());
Address toAddress=new InternetAddress(mailInfo.getToAddress());
message.setFrom(fromAddress);
message.setRecipient(RecipientType.TO,toAddress);
message.setSubject(mailInfo.getSubject());
message.setSentDate(new Date());
message.setText(mailInfo.getContent());
Transport.send(message);
return true;
}
//html文本
public boolean sendHtmlText(MailSenderInfo mailInfo) throws Exception{
MyAuthenticator authen=null;
Properties p=mailInfo.getProperties();
if(mailInfo.isValidate()){
authen=new MyAuthenticator(mailInfo.getUsername(),mailInfo.getPassword());
}
//根据权限判断和配置信息生成会话
Session session=Session.getDefaultInstance(p,authen);
//根据会话生成消息
Message message=new MimeMessage(session);
//发送人的名字可以设置可以不设置...不设置的情况下显示的是邮箱名,即邮件地址截取掉@那部分...
Address fromAddress=new InternetAddress(mailInfo.getFromAddress(),"红尘眷恋");
Address toAddress=new InternetAddress(mailInfo.getToAddress());
message.setFrom(fromAddress);
message.setRecipient(RecipientType.TO,toAddress);
message.setSubject(mailInfo.getSubject());
message.setSentDate(new Date());
// 一个Multipart能包含多个BodyPart
Multipart mainPart=new MimeMultipart();
BodyPart body=new MimeBodyPart();
body.setContent(mailInfo.getContent(),"text/html; charset=utf-8");
mainPart.addBodyPart(body);
message.setContent(mainPart);
Transport.send(message);
return true;
}
/* 当发送多个消息时,建议采用这种方式...
* 因为它将保持消息间活动服务器的连接
* message.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();*/
}
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.AndTerm;
import javax.mail.search.FromStringTerm;
import javax.mail.search.SearchTerm;
import javax.mail.search.SubjectTerm;
public class SimpleMailGet {
public void getMessage(MailSenderInfo mailInfo) throws Exception{
// Properties props = new Properties();
// props.setProperty("mail.store.protocol","pop3");
// props.setProperty("mail.pop3.host","pop3.163.com");
// Session session = Session.getInstance(props);
// // 利用Session对象获得Store对象,并连接pop3服务器
// Store store = session.getStore();
// store.connect("pop3.163.com",110,"[email protected]","yyyyyyy");
Properties p=new Properties();
Session session=Session.getDefaultInstance(p,null);
Store store=session.getStore("pop3");
store.connect(mailInfo.getMailServerHost(),Integer.parseInt(mailInfo.getMailServerPort()),mailInfo.getUsername(),mailInfo.getPassword());
Folder folder=store.getFolder("INBOX");
/* num1
folder.open(Folder.READ_ONLY);
//获取所有。。。
Message message[]=folder.getMessages();
//根据邮件id获取
Message mess=folder.getMessage(35);
for(int i=0;i<message.length;i++){
System.out.println(i+" "+message[i].getFrom()[0]+" "+message[i].getSubject()+" "+" "+message[i].getMessageNumber());
}
System.out.println(mess.getFrom()[0]);*/
/*
* 通过修改标记来改变邮件删除、已阅等状态...pop3是只读的》。。
* folder.open(Folder.READ_WRITE);
Message mess=folder.getMessage(35);
mess.setFlag(Flags.Flag.DELETED,true);
mess.saveChanges();
folder.expunge();*/
folder.open(Folder.READ_ONLY);
SearchTerm st = new FromStringTerm("[email protected]");
Message[] message = folder.search(st);
for(int i=0;i<message.length;i++){
System.out.println(i+" "+message[i].getFrom()[0]+" "+message[i].getSubject()+" "+" "+message[i].getMessageNumber());
}
folder.close(false);
store.close();
}
}
package org.lazyzhong.test;
public class MyTest {
public static void main(String[] args) throws Exception{
//不同的邮箱有不同的主机名和端口号...
// //这个类主要是设置邮件
// MailSenderInfo mailInfo = new MailSenderInfo();
// mailInfo.setMailServerHost("smtp.163.com");
// mailInfo.setMailServerPort("25");
// mailInfo.setValidate(true);
// mailInfo.setUsername("[email protected]");
// mailInfo.setPassword("yyyyyyyyyyyy");//您的邮箱密码
// mailInfo.setFromAddress("[email protected]");
// mailInfo.setToAddress("[email protected]");
// mailInfo.setSubject("设置邮箱标题");
// mailInfo.setContent("<div style='color:red;font-size:25px;'>春天在哪里啊春天在哪里...</div>");
// //这个类主要来发送邮件
// SimpleMailSender sms = new SimpleMailSender();
sms.sendText(mailInfo);//发送文体格式
// sms.sendHtmlText(mailInfo);//发送邮件格式
// 获取邮件信息
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("pop3.163.com");
mailInfo.setMailServerPort("110");
mailInfo.setUsername("[email protected]");
mailInfo.setPassword("yyyyyy");
SimpleMailGet smg=new SimpleMailGet();
smg.getMessage(mailInfo);
}
}