这是我以前写过的一个收发邮件和打印邮件的类,测试过的,你看一下,希望可以帮上忙····public class sendMail extends mailInit { String host = "127.0.0.1";// 设置邮件服务期地址
String username = "test";// 设置邮件服务器登录名
String password = "test";// 设置邮件服务器登陆密码 /*
 * 方法说明:发送邮件 接受参数: 返回类型:void
 */
public void send() {
try {
Properties prop = new Properties();// 创建系统属性对象
prop.put("mail.smtp.host", host);// 设置使用stmp协议
prop.put("mail.smtp.auth", "true"); // SMTP服务用户认证
Session session = Session.getDefaultInstance(prop, null); // 创建一个过程对象 for (int i = 0; i < this.initMail().size(); i++) {
MimeMessage mimeMsg = new MimeMessage(session);// 创建邮件对象
MimeMultipart mp = new MimeMultipart();// 创建邮件体对象
email_send_log m = (email_send_log) this.initMail().get(i);// 初始化邮件体
mimeMsg.setFrom(new InternetAddress("[email protected]","这里是发件人", "UTF-8")); // 设置发送人
mimeMsg.setSubject(m.getEmail_send_title().toString(), "UTF-8"); // 设置邮件标题
BodyPart body = new MimeBodyPart();// 创建文本部分对象
// 设置文本格式
if (m.getType().equals("html")) {
body.setContent(m.getEmail_send_content().toString(),
"text/html;charset=UTF-8");
} else {
body.setContent(m.getEmail_send_content().toString(),
"text/plain;charset=UTF-8");
}
mp.addBodyPart(body);
mimeMsg.setContent(mp);
mimeMsg.saveChanges(); // 判断是否有附件并添加
if (m.getEmail_send_demo() == null) {
} else {
MimeBodyPart part = new MimeBodyPart();
DataSource fds = new FileDataSource(m.getEmail_send_demo());
part.setDataHandler(new DataHandler(fds));
part.setFileName(MimeUtility.encodeText(fds.getName()));
mp.addBodyPart(part);
}
Transport transport = session.getTransport("smtp"); // 创建发送对象
transport.connect(host, username, password);
//Iterator it = m.getTo().iterator();
//int j = 0;
// 使用迭代器群发邮件
//while (it.hasNext()) {
// j++;
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse((String) m.getEmail_send_add()));
transport.sendMessage(mimeMsg, mimeMsg
.getRecipients(Message.RecipientType.TO));
//System.out.println("第" + (i + 1) + "邮件已发送至第" + j + "位客户");
//}
transport.close();
//System.out.println("====================================已发送了"
// + j + "位客户=================================");
} } catch (Exception exp) {
exp.printStackTrace();
}
} /*
 * 方法说明:接收邮件的方法 参数: 返回值:void
 */
public void receive() {
Store store = null;
Folder folder = null;
try {
// 获取会话
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
// 使用pop3会话协议,连接服务器
store = session.getStore("pop3");
store.connect(host, username, password);
// 获取默认文件夹
folder = store.getDefaultFolder();
if (folder == null)
throw new Exception("No default folder");
// 如果是收件箱
folder = folder.getFolder("INBOX");
if (folder == null)
throw new Exception("No POP3 INBOX");
// 使用只读方式打开收件箱
folder.open(Folder.READ_ONLY);
// 得到文件夹信息,获取邮件列表
Message[] msgs = folder.getMessages();
for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
printMessage(msgs[msgNum]);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
// 释放资源
try {
if (folder != null)
folder.close(false);
if (store != null)
store.close();
} catch (Exception ex2) {
ex2.printStackTrace();
}
}
} /*
 * 方法说明:打印邮件信息 输入参数:Message信息对象 返回类型:void
 */
public static void printMessage(Message message) {
try {
// 获得发送邮件地址
String from = ((InternetAddress) message.getFrom()[0])
.getPersonal();
if (from == null)
from = ((InternetAddress) message.getFrom()[0]).getAddress();
System.out.println("发件人是: " + from);
// 获取主题
String subject = message.getSubject();
System.out.println("标题是: " + subject);
// 获取信息对象
Part messagePart = message;
Object content = messagePart.getContent();
// 附件
if (content instanceof Multipart) {
messagePart = ((Multipart) content).getBodyPart(0);
}
// 获取content类型
String contentType = messagePart.getContentType();
// 根据邮件内容将其打印出
System.out.println("CONTENT:" + contentType);
if (contentType.startsWith("text/plain")
|| contentType.startsWith("text/html")) {
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String thisLine = reader.readLine();
while (thisLine != null) {
System.out.println(thisLine);
thisLine = reader.readLine();
}
}
System.out
.println("--------------------------邮件打印完毕!---------------------------");
} catch (Exception ex) {
ex.printStackTrace();
}
} public static void main(String[] args) {
sendMail sm = new sendMail();
 sm.send();
//sm.receive();
}