您的位置:首页 > 编程语言 > Java开发

JAVA MAIL发送邮件实例

2015-12-23 16:30 776 查看
MailUtil类

/**
* @author zhaocd
*/
public class MailUtil {
/**
* 发件人邮箱服务器
*/
private String emailHost = "smtp.163.com";
/**
* 发件人邮箱
*/
private String emailFrom = "zcd4037@163.com";

/**
* 发件人用户名
*/
private String emailUserName = "zcd4037@163.com";

/**
* 发件人密码
*/
private String emailPassword = "你邮箱的密码";

/**
* 收件人邮箱,多个邮箱以“;”分隔
*/
private String toEmails;
/**
* 邮件主题
*/
private String subject;
/**
* 邮件内容
*/
private String content;
/**
* 邮件中的图片,为空时无图片。map中的key为图片ID,value为图片地址
*/
private Map<String, String> pictures;
/**
* 邮件中的附件,为空时无附件。map中的key为附件ID,value为附件地址
*/
private Map<String, String> attachments;

public String getEmailHost() {
//emailHost = DataUtil.objToStr(emailHost);

return emailHost;
}
public void setEmailHost(String emailHost) {
this.emailHost = emailHost;
}

public String getEmailFrom() {
// emailFrom = DataUtil.objToStr(emailFrom);

return emailFrom;
}

public void setEmailFrom(String emailFrom) {
this.emailFrom = emailFrom;
}

public String getEmailUserName() {

return emailUserName;
}

public void setEmailUserName(String emailUserName) {
this.emailUserName = emailUserName;
}
public String getEmailPassword() {

return emailPassword;
}

public void setEmailPassword(String emailPassword) {
this.emailPassword = emailPassword;
}

public String getToEmails() {
return toEmails;
}
public void setToEmails(String toEmails) {
this.toEmails = toEmails;
}

public String getSubject() {
//subject = DataUtil.objToStr(subject);
if (subject.equals("")) {
subject = "无主题";
}
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public Map<String, String> getPictures() {
return pictures;
}

public void setPictures(Map<String, String> pictures) {
this.pictures = pictures;
}

public Map<String, String> getAttachments() {
return attachments;
}

public void setAttachments(Map<String, String> attachments) {
this.attachments = attachments;
}

/**
* 发送邮件
*/
public void sendEmail() throws Exception {
try {
if (this.getEmailHost().equals("") || this.getEmailFrom().equals("")
|| this.getEmailUserName().equals("")
|| this.getEmailPassword().equals("")) {
throw new RuntimeException("发件人信息不完全,请确认发件人信息!");
}

JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

// 设定mail server
senderImpl.setHost(emailHost);

// 建立邮件消息
MimeMessage mailMessage = senderImpl.createMimeMessage();

MimeMessageHelper messageHelper = null;
messageHelper = new MimeMessageHelper(mailMessage, true, "UTF-8");
// 设置发件人邮箱
messageHelper.setFrom(emailFrom);

// 设置收件人邮箱
String[] toEmailArray = toEmails.split(";");
List<String> toEmailList = new ArrayList<String>();
if (null == toEmailArray || toEmailArray.length <= 0) {
throw new RuntimeException("收件人邮箱不得为空!");
} else {
for (String s : toEmailArray) {
//s = DataUtil.objToStr(s);
if (!s.equals("")) {
toEmailList.add(s);
}
}
if (null == toEmailList || toEmailList.size() <= 0) {
throw new RuntimeException("收件人邮箱不得为空!");
} else {
toEmailArray = new String[toEmailList.size()];
for (int i = 0; i < toEmailList.size(); i++) {
toEmailArray[i] = toEmailList.get(i);
}
}
}
messageHelper.setTo(toEmailArray);

// 邮件主题
messageHelper.setSubject(subject);

// true 表示启动HTML格式的邮件
messageHelper.setText(content, true);

// 添加图片
if (null != pictures) {
for (Iterator<Map.Entry<String, String>> it = pictures.entrySet()
.iterator(); it.hasNext();) {
Map.Entry<String, String> entry = it.next();
String cid = entry.getKey();
String filePath = entry.getValue();
if (null == cid || null == filePath) {
throw new RuntimeException("请确认每张图片的ID和图片地址是否齐全!");
}

File file = new File(filePath);
if (!file.exists()) {
throw new RuntimeException("图片" + filePath + "不存在!");
}

FileSystemResource img = new FileSystemResource(file);
messageHelper.addInline(cid, img);
}
}

// 添加附件
if (null != attachments) {
for (Iterator<Map.Entry<String, String>> it = attachments
.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, String> entry = it.next();
String cid = entry.getKey();
String filePath = entry.getValue();
if (null == cid || null == filePath) {
throw new RuntimeException("请确认每个附件的ID和地址是否齐全!");
}

File file = new File(filePath);
if (!file.exists()) {
throw new RuntimeException("附件" + filePath + "不存在!");
}

FileSystemResource fileResource = new FileSystemResource(file);
messageHelper.addAttachment(cid, fileResource);
}
}

Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
prop.put("mail.smtp.timeout", "25000");
// 添加验证
MyAuthenticator auth = new MyAuthenticator(emailUserName, emailPassword);

Session session = Session.getDefaultInstance(prop, auth);
senderImpl.setSession(session);

// 发送邮件
senderImpl.send(mailMessage);
System.out.println("发送成功..........");
} catch (Exception e) {
e.printStackTrace();
}

}
public static void main(String[] args) {
MailUtil mu = new MailUtil();
try {
test1(mu);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void test1(MailUtil mu) throws Exception {
String toEmails = "735873267@qq.com";
String subject = "邮件发送测试";
StringBuilder builder = new StringBuilder();
builder.append("asdf富通银行<br />");
builder.append("JavaMail 1.7 jar包下载地址:http://www.oracle.com/technetwork/java/index-138643.html <br />");
String content = builder.toString();

mu.setToEmails(toEmails);
mu.setSubject(subject);
mu.setContent(content);

mu.sendEmail();
System.out.println("ok............");
}
}


MyAuthenticator类

public class MyAuthenticator extends Authenticator {
String userName = null;
String password = null;
public MyAuthenticator() {
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: