zhengxuezhou 发表于 2013-2-7 20:43:44

一个简单的java Mail发送邮件程序

package com.wisentsoft.management.eventnotif.service.impl;


import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import com.ibm.icu.util.StringTokenizer;

public class Mail {
private String errMsg = "";

private String sender = "";// 发件人地址
private String smtpHost = "";// 邮件发送服务器(smtp)
private String user = ""; // 登录用户名
private String password = "";// 登录密码

private String subject = "";// mail主题

public Mail() {
this.setPropertiesAttri();
}

private void setPropertiesAttri() {
try {
InputStream is = getClass().getResourceAsStream(
"MailServer.properties");
Properties prop = new Properties();
prop.load(is);

this.setSmtpHost(prop.get("SmtpHost").toString());
this.setUser(prop.get("User").toString());
this.setPassword(prop.get("Password").toString());
this.setSender(prop.get("Sender").toString());
this.setSubject(prop.get("Subject").toString());
} catch (Exception ex) {
System.err.println("ex1 in sendmail.java:" + ex.toString());
}
}

/** 设置发件人地址 */

public void setSender(String sender) {
this.sender = sender;
}

public String getSender() {
return sender;
}

/** 设置邮件发送服务器(smtp) */
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}

public String getSmtpHost() {
return smtpHost;
}

/** 设置登录用户名 */
public void setUser(String user) {
this.user = user;
}

public String getUser() {
return user;
}

/** 设置登录密码 */
public void setPassword(String password) {
this.password = password;
}

public String getPassword() {
return password;
}

/** 设置mail主题 */
public void setSubject(String subject) {
this.subject = subject;
}

public String getSubject() {
return subject;
}

/**
* 使用smtp发送邮件 主程序
*
* @throws MessagingException
*             mail发送失败
*/
public void smtp(String receiver, String content) throws MessagingException {
if (smtpHost == null)
throw new MessagingException("smtpHost not found");
if (user == null)
throw new MessagingException("user not found");
if (password == null)
throw new MessagingException("password not found");

Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);// 设置smtp主机
properties.put("mail.smtp.auth", "true");// 使用smtp身份验证

Session session = Session.getDefaultInstance(properties,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});

// 获得邮件会话对象
MimeMessage mimeMsg = new MimeMessage(session);// 创建MIME邮件对象
if (sender != null)// 设置发件人地址
{
mimeMsg.setFrom(new InternetAddress(sender));
}
if (receiver != null)// 设置收件人地址
{
mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
}
if (subject != null)// 设置邮件主题
{
mimeMsg.setSubject(subject, "GBK");
}
MimeBodyPart part = new MimeBodyPart();// mail内容部分
part.setText(content == null ? "" : content, "GBK");

// 设置邮件格式为html cqc
part.setContent(content.toString(), "text/html;charset=GBK");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);// 在 Multipart 中增加mail内容部分
mimeMsg.setContent(multipart);// 增加 Multipart 到信息体
mimeMsg.setSentDate(new Date());// 设置发送日期
Transport.send(mimeMsg);// 发送邮件
}

/** 解析地址集合字符串 */
private InternetAddress[] parse(String addressSet) throws AddressException {
ArrayList list = new ArrayList();
StringTokenizer tokens = new StringTokenizer(addressSet, ";");
while (tokens.hasMoreTokens()) {
list.add(new InternetAddress(tokens.nextToken().trim()));
}
InternetAddress[] addressArray = new InternetAddress;
list.toArray(addressArray);
return addressArray;
}

/**
* 供外部调用的接口
*/

public boolean sendMails(String mail, String content) {
int mailLen = 0;
int contentLen = 0;
if (mail == null || content == null) {
return false;
}

try {
this.smtp(mail, content);
} catch (Exception ex) {
System.err.println("ex2 in sendmail.java:" + ex.toString());
}

return true;
}

public static void main(String[] args) {
Mail mail = new Mail();
String email = "xx@163.com;xx@sina.com";
String content = "账号:123 密码:123 <br/>感谢您注册!<br/><a href='http://www.xxxx.com.cn' target='_blank'>www.xxxx.com.cn</a><br/>此致<br/>xxxx <br/>即日";
try {
mail.sendMails(email, content);
} catch (Exception ex) {
System.err.println("ex33:" + ex.toString());
}
}

}



MailServer.properties:
SmtpHost=smtp.163.com
User=xx
Password=xx
Sender=xx@163.com
Subject=Hello
页: [1]
查看完整版本: 一个简单的java Mail发送邮件程序