通过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/tech/pnotes/10575.html

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

相关推荐

发表回复

登录后才能评论