运用java_Mail_实现发送文本和html页面格式的邮件

Java Mail 实现发送文本和html页面格式的邮件的实际开发:

所需文件:mail.jar

如果你用myEclipse进行开发的话,在建立工程时选择的是JavaEE 1.4及以下版本,都 不会出现问题,如果选择的是JavaEE 5.0版本运行时可能会出现以下的错误:

Exception in thread "main" java.lang.NoClassDefFoundError:

com/sun/mail/util/LineInputStream

原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西. 具体方法如下: 在

Myeclipse6.0.1中用rar打开X:/Program Files/MyEclipse

6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar

在Myeclipse8.5中 D:\Program Files\MyEclipse

8.5\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5/EE_5/javaee.jar ,然后删除mail,一切就ok了. 若删除的时候出错,则需要先在myeclipse里面删除掉引用了J2ee5.0的工程,然后再关闭myeclipse再进行删除操作。

Myeclipse6.5

1.用winrar打开D:\Program Files\MyEclipse

6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5下的javaee.jar,在javax下有activation与mail两个文件夹,把这两个文件夹删除,一定要删除两个光删除mail是不够的。

2.下载j2ee 1.4的mail.jar与activation.jar,放在工程的lib下,导入外部jar即可。

做完这两个步骤应该就可以解决这个问题了,即可用java EE 5.0开发,又可用javamail了。

package intersoft.email.test;

/**

* 发送邮件需要使用的基本信息

http://121374067./

*/

import java.util.Properties;

public class MailSenderInfo {

// 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址

private String fromAddress; // 邮件接收者的地址 private String toAddress; // 登陆邮件发送服务器的用户名和密码 private String userName; private String password; // 是否需要身份验证 private boolean validate = false; // 邮件主题 private String subject; // 邮件的文本内容 private String content; // 邮件附件的文件名 private String[] attachFileNames; /** * 获得邮件会话属性 */ public Properties getProperties() { } public String getMailServerHost() { } public void setMailServerHost(String mailServerHost) { } public String getMailServerPort() { } public void setMailServerPort(String mailServerPort) { } public boolean isValidate() { this.mailServerPort = mailServerPort; return mailServerPort; this.mailServerHost = mailServerHost; return mailServerHost; 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;

} return validate;

public void setValidate(boolean validate) {

this.validate = validate;

}

public String[] getAttachFileNames() {

return attachFileNames;

}

public void setAttachFileNames(String[] fileNames) { this.attachFileNames = fileNames;

}

public String getFromAddress() {

return fromAddress;

}

public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getToAddress() {

return toAddress;

}

public void setToAddress(String toAddress) { this.toAddress = toAddress;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

} } this.userName = userName; public String getSubject() { } public void setSubject(String subject) { } public String getContent() { } public void setContent(String textContent) { } this.content = textContent; return content; this.subject = subject; return subject;

package intersoft.email.test;

import javax.mail.*;

public class MyAuthenticator extends Authenticator {

protected PasswordAuthentication getPasswordAuthentication() { } return new PasswordAuthentication(userName, password); public MyAuthenticator(String username, String password) { } this.userName = username; this.password = password; public MyAuthenticator() { } String userName = null; String password = null;

package intersoft.email.test;

/** *//**

* 简单邮件(不带附件的邮件)发送器

http://121374067./

*/

import java.util.Date;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException; import javax.mail.Multipart;

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;

public class SimpleMailSender {

/** */ /** * 以文本格式发送邮件 * * @param mailInfo * 待发送的邮件的信息 */ public boolean sendTextMail(MailSenderInfo mailInfo) { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); if (mailInfo.isValidate()) { } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session .getDefaultInstance(pro, authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new // 如果需要身份认证,则创建一个密码验证器 authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());

InternetAddress(mailInfo.getFromAddress());

} } // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); mailMessage.setRecipient(Message.RecipientType.TO, to); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // 设置邮件消息的主要内容 String mailContent = mailInfo.getContent(); mailMessage.setText(mailContent); // 发送邮件 Transport.send(mailMessage); return true; ex.printStackTrace(); } catch (MessagingException ex) { return false; /** * 以HTML格式发送邮件 * * @param mailInfo * 待发送的邮件信息 */ public static boolean sendHtmlMail(MailSenderInfo mailInfo) { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); // 如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session .getDefaultInstance(pro, authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());

InternetAddress(mailInfo.getFromAddress());

}

}

package intersoft.email.test;

public class test {

/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // 这个类主要是设置邮件 MailSenderInfo mailInfo = new MailSenderInfo(); } } return false; // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, to); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); // 设置HTML内容 html.setContent(mailInfo.getContent(), "text/html; mainPart.addBodyPart(html); // 将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; ex.printStackTrace(); charset=utf-8"); } catch (MessagingException ex) {

mailInfo.setMailServerHost(""); // 发送邮箱的服务器mailInfo.setMailServerPort("25"); mailInfo.setValidate(true); mailInfo.setUserName("*****"); // 邮箱账户 mailInfo.setPassword("*****");// 邮箱密码 mailInfo.setFromAddress("150xxxxxxxx@126.com"); // 发送人的邮箱地mailInfo.setToAddress("121374067@qq.com"); // 要发送的邮箱地址 mailInfo.setSubject("**的主页"); // 邮箱标题 // 邮件内容 // mailInfo.setContent("你好!"); //文本格式的邮件内容 // html页面格式的邮件内容 mailInfo.setContent("<div (163的邮箱就为:)

style='width:500px;height:100px;background-color:yellow;text-align:center;color:red;font-size:20px;border:solid red;'><b><a

href='http://121374067./'>欢迎来到我的主页!</a></b></div>");

}

//结束。 } // 这个类主要来发送邮件 SimpleMailSender sms = new SimpleMailSender(); //boolean flag = sms.sendTextMail(mailInfo);// 发送文体格式 boolean flag = sms.sendHtmlMail(mailInfo);// 发送html格式 if(flag){ } System.out.println("发送成功!"); System.out.println("发送失败!"); }else{

相关推荐