首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

javamail发送邮件的简略实例(模板一)

2013-07-11 
javamail发送邮件的简单实例(模板一)以下为javamail发送邮件的全部代码?第一个类:MailSenderInfo.java??pa

javamail发送邮件的简单实例(模板一)

以下为javamail发送邮件的全部代码

?

第一个类:MailSenderInfo.java

?

?

package com.mail.util;

/** ?

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

*/ ??

import java.util.Properties; ??

public class MailSenderInfo { ??

? ? // 发送邮件的服务器的IP和端口 ??

? ? private String mailServerHost="smtp.qiye.163.com"; ??

? ? private String mailServerPort = "25"; ??

? ? // 邮件发送者的地址 ??

? ? private String fromAddress="yonghuming@163.com"; ??

? ? // 邮件接收者的地址 ??

? ? private String toAddress; ??

? ? // 登陆邮件发送服务器的用户名和密码 ??

? ? private String userName="yonghuming@163.com"; ??

? ? private String password="mima"; ??

? ? // 是否需要身份验证 ??

? ? private boolean validate = true; ??

? ? // 邮件主题 ??

? ? private String subject; ??

? ? // 邮件的文本内容 ??

? ? private String content; ??

? ? // 邮件附件的文件名 ??

? ? 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 boolean isValidate() { ??

? ? ? 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() { ??

? ? ? return subject; ??

? ? } ?

? ? public void setSubject(String subject) { ??

? ? ? this.subject = subject; ??

? ? } ?

? ? public String getContent() { ??

? ? ? return content; ??

? ? } ?

? ? public void setContent(String textContent) { ??

? ? ? this.content = textContent; ??

? ? } ??

} ??

?

?

第二个类:SimpleMailSender.java

?

?

package com.mail.util;

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) { ??

? ? ? // 判断是否需要身份认证 ??

? ? MailAuthenticator authenticator = null; ??

? ? ? Properties pro = mailInfo.getProperties(); ?

? ? ? if (mailInfo.isValidate()) { ??

? ? ? // 如果需要身份认证,则创建一个密码验证器 ??

? ? ? ? authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); ??

? ? ? } ?

? ? ? // 根据邮件会话属性和密码验证器构造一个发送邮件的session ??

? ? ? Session sendMailSession = Session.getDefaultInstance(pro,authenticator); ??

? ? ? try { ??

? ? ? // 根据session创建一个邮件消息 ??

? ? ? Message mailMessage = new MimeMessage(sendMailSession); ??

? ? ? // 创建邮件发送者地址 ??

? ? ? Address from = new 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; ??

? ? ? } catch (MessagingException ex) { ??

? ? ? ? ? ex.printStackTrace(); ??

? ? ? } ??

? ? ? return false; ??

? ? } ??

? ? ??

? ? /** ?

? ? ? * 以HTML格式发送邮件 ?

? ? ? * @param mailInfo 待发送的邮件信息 ?

? ? ? */ ??

? ? public static boolean sendHtmlMail(MailSenderInfo mailInfo){ ??

? ? ? // 判断是否需要身份认证 ??

? ? MailAuthenticator authenticator = null; ?

? ? ? Properties pro = mailInfo.getProperties(); ?

? ? ? //如果需要身份认证,则创建一个密码验证器 ? ?

? ? ? if (mailInfo.isValidate()) { ??

? ? ? ? authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); ?

? ? ? } ??

? ? ? // 根据邮件会话属性和密码验证器构造一个发送邮件的session ??

? ? ? Session sendMailSession = Session.getDefaultInstance(pro,authenticator); ??

? ? ? try { ??

? ? ? // 根据session创建一个邮件消息 ??

? ? ? Message mailMessage = new MimeMessage(sendMailSession); ??

? ? ? // 创建邮件发送者地址 ??

? ? ? Address from = new InternetAddress(mailInfo.getFromAddress()); ??

? ? ? // 设置邮件消息的发送者 ??

? ? ? 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; charset=utf-8"); ??

? ? ? mainPart.addBodyPart(html); ??

? ? ? // 将MiniMultipart对象设置为邮件内容 ??

? ? ? mailMessage.setContent(mainPart); ??

? ? ? // 发送邮件 ??

? ? ? Transport.send(mailMessage); ??

? ? ? return true; ??

? ? ? } catch (MessagingException ex) { ??

? ? ? ? ? ex.printStackTrace(); ??

? ? ? } ??

? ? ? return false; ??

? ? } ??

} ?

?

?

第三个类:MailAuthenticator?.java?

?

?

package com.mail.util;

?

import javax.mail.Authenticator;

import javax.mail.PasswordAuthentication;

?

public class MailAuthenticator extends Authenticator {

/**

? ? ?* 用户名(登录邮箱)

? ? ?*/

? ? private String username;

? ? /**

? ? ?* 密码

? ? ?*/

? ? private String password;

?

? ? /**

? ? ?* 初始化邮箱和密码

? ? ?*?

? ? ?* @param username 邮箱

? ? ?* @param password 密码

? ? ?*/

? ? public MailAuthenticator(String username, String password) {

? ? this.username = username;

? ? this.password = password;

? ? }

?

? ? String getPassword() {

? ? return password;

? ? }

?

? ? @Override

? ? protected PasswordAuthentication getPasswordAuthentication() {

? ? return new PasswordAuthentication(username, password);

? ? }

?

? ? String getUsername() {

? ? return username;

? ? }

?

? ? public void setPassword(String password) {

? ? this.password = password;

? ? }

?

? ? public void setUsername(String username) {

? ? this.username = username;

? ? }

?

}

?

?

?

? 测试类

?

?

package com.mail.util;

?

public class MailTest {

public static void main(String[] args){ ?

? ? ? ? //这个类主要是设置邮件 ?

? ? ?MailSenderInfo mailInfo = new MailSenderInfo(); ?

? ? ?/*mailInfo.setMailServerHost("smtp.qiye.163.com"); ??

? ? ?mailInfo.setMailServerPort("25"); ??

? ? ?mailInfo.setValidate(true); ??

? ? ?mailInfo.setUserName("yonghuming@163.com"); ??

? ? ?mailInfo.setPassword("mima");//您的邮箱密码 ??

? ? mailInfo.setFromAddress("yonghuming@163.com"); */

? ? ?mailInfo.setToAddress("jieshoufang@qq.com"); ??

? ? ?mailInfo.setSubject("设置邮箱标题"); ??

? ? ?mailInfo.setContent("<a href='http://www.baidu.com'>设置邮箱内容</a>"); ??

? ? ? ? //这个类主要来发送邮件 ?

? ? ?SimpleMailSender sms = new SimpleMailSender(); ?

? ? ? ? // sms.sendTextMail(mailInfo);//发送文体格式 ??

? ? ?

? ? ? ? ?sms.sendHtmlMail(mailInfo);//发送html格式 ?

? ? ? ? ?System.out.println("发送成功");

? ?} ?

}

?

?

注意问题

1.java发送邮件的完整代码,同一个包下的类,缺一不可

2.使用javamail需要导入mail.jar包

3.另一个问题就是mailInfo.setMailServerHost("smtp.163.com");mailInfo.setFromAddress("han2000lei@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。?

4.发送邮件的服务器设置,163普通用户的为mailInfo.setMailServerHost("smtp.163.com");163企业用户的为mailInfo.setMailServerHost("smtp.qiye.163.com")-----------qq的需要在设置里面的用户中设置服务器的类型 ?mailInfo.setMailServerHost("smtp.qq.com")才能生效

?

?

?

?

热点排行