网上找了一个邮件发送的代码自己又加了配置信息读取现在跟大家分享一下
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public final class MailUtil {
// 邮件发送者地址
private static String SenderEmailAddr = "";
// 邮件发送者邮箱用户
private static String SMTPUserName = "";
// 邮件发送者邮箱密码
private static String SMTPPassword = "";
// 邮件发送者邮箱SMTP服务器
private static String SMTPServerName = "";
// 传输类型
private static String TransportType = "";
// 服务器地址
private static String HttpUrl = "";
// 属性
private static Properties props;
/**
* 私有构造函数,防止外界新建本实用类的实例,因为直接使用MailUtil.sendMail发送邮件即可
*
*/
private MailUtil() {
}
/**
* 静态构造器
*/
static {
MailUtil.props = new Properties();
// 存储发送邮件服务器的信息
MailUtil.props.put("mail.smtp.host", MailUtil.SMTPServerName);
// 同时通过验证
MailUtil.props.put("mail.smtp.auth", "true");
}
/**
* 发送邮件
* @param emailAddr:收信人邮件地址
* @param mailTitle:邮件标题
* @param mailConcept:邮件内容
*/
public static void sendMail(String emailAddr, String mailTitle,
String mailConcept,String requestUrl) {
Map map=getSystemMailCount();
SenderEmailAddr =map.get("mailAcount").toString();
SMTPUserName=map.get("mailAcount").toString().substring(0,map.get("mailAcount").toString().lastIndexOf("@"));
SMTPServerName=map.get("mailSmtp").toString();
SMTPPassword=map.get("mailPwd").toString();
TransportType=map.get("mailType").toString();
HttpUrl=map.get("httpUrl").toString();
// 根据属性新建一个邮件会话,null参数是一种Authenticator(验证程序) 对象
Session s = Session.getInstance(MailUtil.props, null);
// 设置调试标志,要查看经过邮件服务器邮件命令,可以用该方法
s.setDebug(false);
// 由邮件会话新建一个消息对象
Message message = new MimeMessage(s);
try {
// 设置发件人
Address from = new InternetAddress(MailUtil.SenderEmailAddr);
message.setFrom(from);
// 设置收件人
Address to = new InternetAddress(emailAddr);
message.setRecipient(Message.RecipientType.TO, to);
// 设置主题
message.setSubject(mailTitle);
// 设置信件内容
message.setText(mailConcept+HttpUrl+requestUrl);
// 设置发信时间
message.setSentDate(new Date());
// 存储邮件信息
message.setDescription("密码找回");
message.saveChanges();
Transport transport = s.getTransport(MailUtil.TransportType);
// 要填入你的用户名和密码;
transport.connect(MailUtil.SMTPServerName, MailUtil.SMTPUserName,
MailUtil.SMTPPassword);
// 发送邮件,其中第二个参数是所有已设好的收件人地址
transport.sendMessage(message, message.getAllRecipients());
transport.close();
// System.out.println("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle + " 内容:" + mailConcept + "成功!");
} catch (Exception e) {
System.out.println(e.getMessage());
// System.out.println("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle + " 内容:" + mailConcept + "失败! 原因是" + e.getMessage());
}
}
public static Map getSystemMailCount(){
Map map=new HashMap();
InputStream inputStream = null;
inputStream =new MailUtil().getClass().getClassLoader().getResourceAsStream("mailConfig.properties");
Properties prop=new Properties();
try {
prop.load(inputStream);
String mailAcount=prop.get("mailAcount").toString();
String mailPwd=prop.get("mailPwd").toString();
String mailSmtp=prop.get("mailSmtp").toString();
String mailType=prop.get("mailType").toString();
String httpUrl=prop.get("httpUrl").toString();
map.put("mailAcount", mailAcount);
map.put("mailPwd", mailPwd);
map.put("mailSmtp", mailSmtp);
map.put("mailType", mailType);
map.put("httpUrl", httpUrl);
} catch (IOException e) {
e.printStackTrace();
System.out.println("邮箱配置文件读取失败!");
}
return map;
}
/**
* 测试邮件发送情况
* @param args 353333333
*/
public static void main(String[] args){
MailUtil.sendMail("3533333333@qq.com", "密码找回", "点击连接重置您的密码http://www.baidu.com");
new MailUtil().getSystemMailCount();
}
}
下面是mailConfig.properties文件内容
mailAcount=test@163.com
mailPwd=test
mailSmtp=smtp.163.com
mailType=smtp
httpUrl=http://localhost:8080/test/
欢迎大家能把更好的代码分享交流