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")才能生效
?
?
?
?