通过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.工具类如下:

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.测试类如下:

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("[email protected]");   
eu.setTo("[email protected]");   
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("[email protected]");   
String[] tos = new String[]{"[email protected]", "[email protected]"};   
eu.setTos(tos);   
String[] ccs = new String[]{"[email protected]", "[email protected]"};   
eu.setCcs(ccs);   
String[] bccs = new String[]{"[email protected]", "[email protected]"};   
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("[email protected]");   
eu.setTo("[email protected]");   
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");此处用自己的邮箱用户名和密码.  

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10575.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论