通过common-emai类库发送普通邮件和带有附件的邮件的完整示例

1.此示例是通过maven构建,pom.xml文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ilucky.util.email</groupId>
  <artifactId>email-util</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>email-util</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-email</artifactId>
		<version>1.3.3</version>
	</dependency>
  </dependencies>
</project>
2.工具类如下:

package com.ilucky.util.email;

import java.net.URL;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;

/**
 * @author IluckySi
 * @since 20150108
 */
public class EmailUtil {

	private String hostName;// 邮箱服务器.
	
	private int port; //服务器端口号.

	private String defaultAuthenticatorUsername;// 用户名.

	private String defaultAuthenticatorPassword;// 密码.

	private String charset = "GB2312";// 邮件编码方式,默认为GB2312.
	
	private int timeout = 8000;//超时时间,单位毫秒,默认为8000.
	
	private String from;// 发送方.

	private String to;// 接收方.

	private String[] tos;// 多个接收方.

	private String cc;// 抄送方.

	private String[] ccs;// 多个抄送方.

	private String bcc;// 秘密抄送方.

	private String[] bccs;// 多个秘密抄送方.

	private String subject;// 标题.

	private String msg;// 内容.

	private String localAttachmentPath;// 本地附件.

	private String remoteAttachmentPath;// 远程附件.
	
	private String attachmentName;//附件名称.
	
	private String attachDescription;//附件描述.

	public String getHostName() {
		return hostName;
	}

	public void setHostName(String hostName) {
		this.hostName = hostName;
	}

	public int getPort() {
		return port;
	}

	public void setPort(int port) {
		this.port = port;
	}

	public String getDefaultAuthenticatorUsername() {
		return defaultAuthenticatorUsername;
	}

	public void setDefaultAuthenticatorUsername(
			String defaultAuthenticatorUsername) {
		this.defaultAuthenticatorUsername = defaultAuthenticatorUsername;
	}

	public String getDefaultAuthenticatorPassword() {
		return defaultAuthenticatorPassword;
	}

	public void setDefaultAuthenticatorPassword(
			String defaultAuthenticatorPassword) {
		this.defaultAuthenticatorPassword = defaultAuthenticatorPassword;
	}

	public String getCharset() {
		return charset;
	}

	public void setCharset(String charset) {
		this.charset = charset;
	}

	public int getTimeout() {
		return timeout;
	}

	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}

	public String getFrom() {
		return from;
	}

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

	public String getTo() {
		return to;
	}

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

	public String[] getTos() {
		return tos;
	}

	public void setTos(String[] tos) {
		this.tos = tos;
	}

	public String getCc() {
		return cc;
	}

	public void setCc(String cc) {
		this.cc = cc;
	}

	public String[] getCcs() {
		return ccs;
	}

	public void setCcs(String[] ccs) {
		this.ccs = ccs;
	}

	public String getBcc() {
		return bcc;
	}

	public void setBcc(String bcc) {
		this.bcc = bcc;
	}

	public String[] getBccs() {
		return bccs;
	}

	public void setBccs(String[] bccs) {
		this.bccs = bccs;
	}

	public String getSubject() {
		return subject;
	}

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

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public String getLocalAttachmentPath() {
		return localAttachmentPath;
	}

	public void setLocalAttachmentPath(String localAttachmentPath) {
		this.localAttachmentPath = localAttachmentPath;
	}

	public String getRemoteAttachmentPath() {
		return remoteAttachmentPath;
	}

	public void setRemoteAttachmentPath(String remoteAttachmentPath) {
		this.remoteAttachmentPath = remoteAttachmentPath;
	}
	
	public String getAttachmentName() {
		return attachmentName;
	}

	public void setAttachmentName(String attachmentName) {
		this.attachmentName = attachmentName;
	}

	public String getAttachDescription() {
		return attachDescription;
	}

	public void setAttachDescription(String attachDescription) {
		this.attachDescription = attachDescription;
	}

	/**
	 * 发送普通邮件. 支持一个/多个接收方,一个/多个抄送方,一个/多个秘密抄送方.
	 * 
	 * @return boolean
	 */
	public boolean sendWithMsg() {
		boolean result = false;
		SimpleEmail email = new SimpleEmail();
		email.setSmtpPort(port);
		try {
			email.setHostName(hostName);
			email.setAuthenticator(new DefaultAuthenticator(
					defaultAuthenticatorUsername, defaultAuthenticatorPassword));
			email.setCharset(charset);
			email.setSocketConnectionTimeout(timeout);
			email.setFrom(from);
			if (to != null) {
				email.addTo(to);
			}
			if (tos != null) {
				email.addTo(tos);
			}
			if (cc != null) {
				email.addCc(cc);
			}
			if (ccs != null) {
				email.addCc(ccs);
			}
			if (bcc != null) {
				email.addBcc(bcc);
			}
			if (bccs != null) {
				email.addBcc(bccs);
			}
			if (subject != null) {
				email.setSubject(subject);
			}
			if (msg != null) {
				email.setMsg(msg);
			}
			if (email.send() != null) {
				System.out.println("发送邮件成功");
				result = true;
			} else {
				System.out.println("发送邮件失败");
			}
		} catch (EmailException e) {
			System.out.println("发送邮件失败: " + e);
		}
		return result;
	}

	/**
	 * 发送带有附件的邮件. 支持一个/多个接收方,一个/多个抄送方,一个/多个秘密抄送方.
	 * 
	 * @return boolean
	 */
	public boolean sendWithMsgAndAttachment() {
		boolean result = false;
		MultiPartEmail email = new MultiPartEmail();
		email.setSmtpPort(port);
		EmailAttachment attachment = new EmailAttachment();
		try {
			email.setHostName(hostName);
			email.setAuthenticator(new DefaultAuthenticator(
					defaultAuthenticatorUsername, defaultAuthenticatorPassword));
			email.setCharset(charset);
			email.setSocketConnectionTimeout(timeout);
			email.setFrom(from);
			if (to != null) {
				email.addTo(to);
			}
			if (tos != null) {
				email.addTo(tos);
			}
			if (cc != null) {
				email.addCc(cc);
			}
			if (ccs != null) {
				email.addCc(ccs);
			}
			if (bcc != null) {
				email.addBcc(bcc);
			}
			if (bccs != null) {
				email.addBcc(bccs);
			}
			if (subject != null) {
				email.setSubject(subject);
			}
			if (msg != null) {
				email.setMsg(msg);
			}
			if (localAttachmentPath != null) {
				attachment.setPath(localAttachmentPath);
				attachment.setDisposition(EmailAttachment.ATTACHMENT);
			}
			if (remoteAttachmentPath != null) {
				attachment.setURL(new URL(remoteAttachmentPath));
				attachment.setDisposition(EmailAttachment.ATTACHMENT);
			}
			if(attachmentName != null) {
				attachment.setName(attachmentName);
			}
			if(attachDescription != null) {
				attachment.setDescription(attachDescription);
			}
			email.attach(attachment);
			if (email.send() != null) {
				System.out.println("发送邮件成功");
				result = true;
			} else {
				System.out.println("发送邮件失败");
			}
		} catch (EmailException e) {
			System.out.println("发送邮件失败: " + e);
		} catch (Exception e) {
			System.out.println("发送邮件失败: " + e);
		}
		return result;
	}
}
3.测试类如下:

package com.ilucky.util;

import com.ilucky.util.email.EmailUtil;

/**
 * @author IluckySi
 * @since 20150108
 * 
 * 注意:以后可以扩展回复邮件,定时发送等.
 */
public class MainTest {

	public static void main(String[] args) {
		
		//发送普通邮件.
		//post1();
		//post2();
		post3();
	}
	
	public static void post1() {
		EmailUtil eu = new EmailUtil();
		eu.setHostName("smtp.sohu.com");
		eu.setPort(25);
		eu.setDefaultAuthenticatorUsername("sidongxue");
		eu.setDefaultAuthenticatorPassword("123456");
		eu.setCharset("GB2312");
		eu.setTimeout(16000);
		eu.setFrom("sidongxue@sohu.com");
		eu.setTo("sidongxue@sohu.com");
		eu.setSubject("测试邮件");
		eu.setMsg("亲,这是一封测试邮件!");
		System.out.println("发送邮件结果: " + eu.sendWithMsg());
	}
	
	public static void post2() {
		EmailUtil eu = new EmailUtil();
		eu.setHostName("smtp.sohu.com");
		eu.setPort(25);
		eu.setDefaultAuthenticatorUsername("sidongxue");
		eu.setDefaultAuthenticatorPassword("123456");
		eu.setCharset("GB2312");
		eu.setTimeout(30000);
		eu.setFrom("sidongxue@sohu.com");
		String[] tos = new String[]{"1151262684@qq.com", "570258762@qq.com"};
		eu.setTos(tos);
		String[] ccs = new String[]{"1016336364@qq.com", "pengzhongchen@gmail.com"};
		eu.setCcs(ccs);
		String[] bccs = new String[]{"1198377646@qq.com", "sidongxue@sohu.com"};
		eu.setBccs(bccs);
		eu.setSubject("测试邮件");
		eu.setMsg("亲,这是一封测试邮件,如果收到邮件,请及时回复,十分感谢,如果回复晚了,后果自负!");
		System.out.println("发送邮件结果: " + eu.sendWithMsg());
	}
	
	public static void post3() {
		EmailUtil eu = new EmailUtil();
		eu.setHostName("smtp.sohu.com");
		eu.setPort(25);
		eu.setDefaultAuthenticatorUsername("sidongxue");
		eu.setDefaultAuthenticatorPassword("123456");
		eu.setCharset("GB2312");
		eu.setTimeout(16000);
		eu.setFrom("sidongxue@sohu.com");
		eu.setTo("sidongxue@sohu.com");
		eu.setSubject("测试邮件"); 
		eu.setMsg("亲,这是一封测试邮件!");
		eu.setAttachmentName("哈哈");
		eu.setAttachDescription("这是一个文件,点我!");
		eu.setLocalAttachmentPath("D:\\ilucky\\新建文本文档22.txt");
		System.out.println("发送邮件结果: " + eu.sendWithMsgAndAttachment());
	}
}
注意:
eu.setDefaultAuthenticatorUsername("sidongxue");
eu.setDefaultAuthenticatorPassword("123456");此处用自己的邮箱用户名和密码.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
邮件地址输入域的有效等价类: 1. 符合邮件地址格式的输入(例如:example@email.com) 2. 邮箱账号部分为空(例如:@email.com) 3. 域名部分为空(例如:example@) 4. 邮箱账号和域名部分均为空(例如:@) 5. 邮箱账号中包含特殊字符(例如:example$@email.com) 6. 域名中包含特殊字符(例如:example@e&mail.com) 7. 域名后缀不符合规范(例如:example@email) 无效等价类: 8. 邮箱账号长度超过限制(例如:abcdefghijklmnopqrstuvwxyz1234567890@e.com) 9. 域名长度超过限制(例如:example@abcdefghijklmnopqrstuvwxyz1234567890.com) 10. 无“@”符号的输入(例如:exampleemail.com) 11. 多个“@”符号的输入(例如:exa@mple@emai@l.com) 基于以上等价类,可以设计以下测试用例: 有效等价类测试用例: 1. 测试输入符合邮件地址格式的字符串,例如:example@email.com 2. 测试输入邮箱账号部分为空的字符串,例如:@email.com 3. 测试输入域名部分为空的字符串,例如:example@ 4. 测试输入邮箱账号和域名部分均为空的字符串,例如:@ 5. 测试输入邮箱账号中包含特殊字符的字符串,例如:example$@email.com 6. 测试输入域名中包含特殊字符的字符串,例如:example@e&mail.com 7. 测试输入域名后缀不符合规范的字符串,例如:example@email 无效等价类测试用例: 8. 测试输入邮箱账号长度超过限制的字符串,例如:abcdefghijklmnopqrstuvwxyz1234567890@e.com 9. 测试输入域名长度超过限制的字符串,例如:example@abcdefghijklmnopqrstuvwxyz1234567890.com 10. 测试输入无“@”符号的字符串,例如:exampleemail.com 11. 测试输入多个“@”符号的字符串,例如:exa@mple@emai@l.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值