java简单邮件发送demo

需要用到的jar包:commons-email.jar,activation.jar,mail.jar 

整个代码如下:

/**
 * @Author dengsilinming
 * @Date 2012-9-11
 * 
 */
package com.dengsilinming.mail;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

public class SendMail {

	/**
	 * @author dengsilinming
	 * @date 2012-9-11
	 * @description 
	 */
	public static void main(String[] args) {
		sendMultiMessage();

	}
	
	/*
	 * 可以参考http://commons.apache.org/email/userguide.html
	 * 方法中的附件地址可以当作参数传递,还有其它的一些地方可以进行优化
	 * 
	 * 程序中注释掉的部分是发送单个附件的程式
	 * */
	public static void sendMultiMessage() {
		HtmlEmail email = new HtmlEmail();//用来发送HTML格式的email,除了有MultipartEmail的所有能力,还可以发送内嵌的图象
//		SimpleEmail  email = new SimpleEmail ();//用来发送基本的文本email
//		MultipartEmail email = new MultipartEmail();//该类用来发送Multipart 信息。他允许发送带附件的文本信息
//		EmailAttachment email = new EmailAttachment();//方便发送email的时候,进行附件处理。主要提供给MultipartEmail和HtmlEmail来使用
	
		String[] multiPaths = new String[] {"F:\\Photos\\min\\psb.jpg", "F:\\Mixed And Disorderly\\测试.txt"};//将上传的文件地址
		List<EmailAttachment> attachmentList = new ArrayList<EmailAttachment>();
		
		for (int i = 0; i < multiPaths.length; i ++) {
			EmailAttachment attachment = new EmailAttachment();//邮件附件对象
			if (multiPaths[i].indexOf("http") == -1) //是本地文件
				attachment.setPath(multiPaths[i]);
			else {
				try {
					attachment.setURL(new URL(multiPaths[i]));//设置url地址
				} catch (MalformedURLException e) {
					e.printStackTrace();
				}
			}
			
			attachment.setDisposition(EmailAttachment.ATTACHMENT);
			attachment.setDescription("测试邮件的发送");
			String name = multiPaths[i].substring(multiPaths[i].lastIndexOf("\\")+1);
			System.out.println("--------name:" + name);
			attachment.setName(name);//附件在邮件中显示的名字,中文的乱码问题没有解决,导致附件名有中文时显示乱码
			attachmentList.add(attachment);
		}
		
		
//		EmailAttachment attachment = new EmailAttachment();
//		attachment.setPath("F:\\Photos\\min\\psb.jpg");
//		attachment.setDisposition(EmailAttachment.ATTACHMENT);
//		attachment.setDescription("测试邮件的发送");
//		attachment.setName("psb.jpg");
		
		try {
			email.setHostName("smtp.126.com");//发送服务器的名字
			email.setCharset("utf-8");//设置编码集
			email.addTo("*******[email protected]");//收件人邮箱
			email.setFrom("*******@126.com");//发送人邮箱
			email.setAuthentication("userName", "password");//发件人的用户名与密码
			email.setSubject("这是一封测试邮件,请不要回复!");//发送主题(邮件主题)
			email.setMsg("<b><a href=\"http://www.google.com\"> 邮件测试内容</a></b>");//邮件内容
			
			for (int j = 0; j < attachmentList.size(); j ++) 
				email.attach(attachmentList.get(j));//添加多个附件
//			email.attach(attachment);
			email.send();//发送
			System.out.println("发送完成");
		} catch (EmailException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
经过测试,邮件能够正常的发送,多个附件也能成功。

SimpleEmail、MultipartEmail、EmailAttachment的示例可以参见这里
官方地址:http://commons.apache.org/email/

你可能感兴趣的:(java,Date,String,测试,url,email)