`
wiiln
  • 浏览: 149883 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaMail -- 发送邮件

    博客分类:
  • J2SE
阅读更多
package com.vutc.common.view;

import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
* Title: 使用JavaMail发送邮件
* Description: 使用JavaMail包发送电子邮件,可发送多附件。
* Copyright: Copyright (c) 2008
* Filename: JavaMail.java
*
* @version 1.0
*/

public class JavaMail {

String to = ""; //收件人
String from = ""; //发件人
String host = ""; //SMTP主机
String username = ""; //发件人邮箱用户名
String password = ""; //发件人邮箱密码
String filename = ""; //附件文件名
String subject = ""; //邮件主题
String content = ""; //邮件正文
Vector<String> file = new Vector<String>(); //附件文件集合

/**
* 默认构造器
*/
public JavaMail() {
}

/**
* 构造器,提供直接的参数传入
*/
public JavaMail(String to, String from, String smtpServer, String username,
String password, String subject, String content) {
this.to = to;
this.from = from;
this.host = smtpServer;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
}

/**
* 往附件组合中添加附件
*/
public void attachfile(String fname) {
file.addElement(fname);
}

/**
* 发送邮件
* boolean 成功为true,反之为false
*/
public boolean sendMail() {
//构造mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});

try {
//构造MimeMessage 并设定基本的值
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
subject = transferChinese(subject);
msg.setSubject(subject);

//构造Multipart
Multipart mp = new MimeMultipart();
//向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
//向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//向Multipart添加附件
Enumeration<String> efile = file.elements();
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
filename = efile.nextElement().toString();
FileDataSource fds = new FileDataSource(filename);
mbpFile.setDataHandler(new DataHandler(fds));
mbpFile.setFileName(fds.getName());
//向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}

file.removeAllElements();
//向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);

} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
return false;
}
return true;
}

/**
* 主方法,用于测试
*/
public static void main(String[] args) {
JavaMail sendmail = new JavaMail();
sendmail.setHost("smtp.163.com");
sendmail.setUserName("wiiln");
sendmail.setPassWord("123456");
sendmail.setTo("wiiln@yeah.net");
sendmail.setFrom("wiiln@163.com");
sendmail.setSubject("主题测试!");
sendmail.setContent("内容测试!");
sendmail.attachfile("c:/files/a.txt");
sendmail.attachfile("c:/files/bang.rar");

sendmail.sendMail();
}


/**
* 把主题转换为中文
*/
private String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),"GB2312"), "GB2312", "B");
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}


public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}

public Vector<String> getFile() {
return file;
}

public void setFile(Vector<String> file) {
this.file = file;
}

public String getTo() {
return to;
}

public String getFrom() {
return from;
}

public String getHost() {
return host;
}

public String getSubject() {
return subject;
}

public String getContent() {
return content;
}

public void setTo(String to) {
this.to = to;
}

public void setFrom(String from) {
this.from = from;
}

public void setHost(String host) {
this.host = host;
}

public void setUserName(String usn) {
this.username = usn;
}

public void setPassWord(String pwd) {
this.password = pwd;
}

public void setSubject(String subject) {
this.subject = subject;
}

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


}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics