Java实现邮件推送功能

打印 上一主题 下一主题

主题 861|帖子 861|积分 2583

java 实现邮件推送
Java实现邮件推送功能

一、引入依赖
  1. <dependency><br>            <groupId>org.apache.commons</groupId><br>            <artifactId>commons-email</artifactId><br>            <version>1.4</version><br> </dependency>
复制代码
二、邮件来源用户信息
  1. private static Logger log = Log.getLogger();<br>private static ThreadPoolExecutor threadPool;<br>private static String emailServer;<br>private static String userName;<br>private static String password;<br>private static String emailEncoding;<br>private static String emailFrom;<br>private static String sysEmailFromName;<br>private static String encoding;<br>    <br>private static void initMail(Email mail) throws EmailException {<br>    mail.setHostName(emailServer);<br>    mail.setAuthentication(userName, password);<br>    mail.setCharset(emailEncoding);<br>    mail.setFrom(emailFrom, sysEmailFromName);<br>}
复制代码
三、线程池异步
  1. static {<br>    threadPool = new ThreadPoolExecutor(5, 10, 3L, TimeUnit.SECONDS, new ArrayBlockingQueue(50), new ThreadPoolExecutor.DiscardPolicy());<br>    //邮箱服务器地址<br>    emailServer = "smtp.163.com";<br>    //用户名<br>    userName = "****";<br>    //用户密码<br>    password = "****";<br>    //编码格式<br>    emailEncoding = "GBK";<br>    //邮件来源<br>    emailFrom = "*****.com.cn";<br>    //邮件来源用户名称<br>    sysEmailFromName = "****";<br>    //编码格式<br>    encoding = "UTF-8";<br>}<br>​
复制代码
四、异步发送
  1. private static void sendMail(Email mail) {<br>        threadPool.execute(new Runnable() {<br>            @Override<br>            public void run() {<br>                try {<br>                    mail.send();<br>                } catch (EmailException var2) {<br>                    log.error("[邮件抄送失败]-", var2);<br>                }<br>            }<br>        });<br>    }
复制代码
五 完备发送
  1. import org.apache.commons.lang.StringUtils;<br>import org.apache.commons.mail.*;<br>import org.slf4j.Logger;<br>​<br>import javax.mail.internet.MimeUtility;<br>import java.io.File;<br>import java.io.UnsupportedEncodingException;<br>import java.util.Arrays;<br>import java.util.List;<br>import java.util.concurrent.ArrayBlockingQueue;<br>import java.util.concurrent.ThreadPoolExecutor;<br>import java.util.concurrent.TimeUnit;<br>​<br>/**<br> * 邮件发送工具<br> */<br>public class MailUtil {<br>​<br>    private static Logger log = Log.getLogger();<br>    private static ThreadPoolExecutor threadPool;<br>    private static String emailServer;<br>    private static String userName;<br>    private static String password;<br>    private static String emailEncoding;<br>    private static String emailFrom;<br>    private static String sysEmailFromName;<br>    private static String encoding;<br>    <br>    private static void initMail(Email mail) throws EmailException {<br>        mail.setHostName(emailServer);<br>        mail.setAuthentication(userName, password);<br>        mail.setCharset(emailEncoding);<br>        mail.setFrom(emailFrom, sysEmailFromName);<br>    }<br>    <br>    static {<br>    threadPool = new ThreadPoolExecutor(5, 10, 3L, TimeUnit.SECONDS, <br>                                        new ArrayBlockingQueue(50), <br>                                        new ThreadPoolExecutor.DiscardPolicy());<br>    //邮箱服务器地址<br>    emailServer = "mailha.sinosafe.local";<br>    //用户名<br>    userName = "****";<br>    //用户密码<br>    password = "****";<br>    //编码格式<br>    emailEncoding = "GBK";<br>    //邮件来源<br>    emailFrom = "*****.com.cn";<br>    //邮件来源用户名称<br>    sysEmailFromName = "****";<br>    //编码格式<br>    encoding = "UTF-8";<br>    }<br>    <br>     /**<br>     * 异步发送邮件<br>     */<br>    private static void sendMail(Email mail) {<br>        threadPool.execute(new Runnable() {<br>            @Override<br>            public void run() {<br>                try {<br>                    mail.send();<br>                } catch (EmailException var2) {<br>                    log.error("[邮件抄送失败]-", var2);<br>                }<br>            }<br>        });<br>    }<br>    <br>    /**<br>    * 抄送郵件<br>    */<br>    public static void bccHtmlEmail(String subject, String html, List<String> users) throws Exception {<br>        HtmlEmail email = new HtmlEmail();<br>        initMail(email);<br>        email.setSubject(subject);<br>        for (String r : users){<br>            email.addBcc(r);<br>        }<br>        email.setHtmlMsg(html);<br>        email.setTextMsg("Your email client does not support HTML messages");<br>        sendMail(email);<br>    }<br>    <br>    /**<br>    * 单附件邮件<br>    */<br>    public static void sendEmailWithFile(String subject, String html, List<String> receivers, <br>                                         File file) throws UnsupportedEncodingException {<br>        //附件<br>        EmailAttachment att1 = new EmailAttachment();<br>        att1.setPath(file.getPath());<br>        att1.setDisposition(EmailAttachment.ATTACHMENT);<br>        att1.setDescription("attachemnt description gril 中文");<br>        att1.setName(MimeUtility.encodeText(file.getName()));<br>        MultiPartEmail email = new MultiPartEmail();<br>        email.setHostName(emailServer);<br>        email.setAuthentication(userName, password);<br>        email.setCharset(emailEncoding);<br>        email.setSubject(subject);<br>        try {<br>            email.setMsg(html);<br>            for (String user : receivers) {<br>                email.addTo(user);<br>            }<br>            email.setFrom(emailFrom, sysEmailFromName); <br>            email.attach(att1);  <br>            email.send();<br>        } catch (EmailException e1) {<br>            e1.printStackTrace();<br>        }<br>    }<br>    <br>    public static void sendEmailMultifile(String subject, String html, List<String> receivers,<br>                                          List<File> files){<br>        HtmlEmail email = new HtmlEmail();<br>        email.setHostName(emailServer);<br>        email.setAuthentication(userName, password);<br>        email.setCharset(emailEncoding);<br>        email.setSubject(subject);<br>        try {<br>            for (String user : receivers) {<br>                email.addTo(user);<br>            }<br>            email.setFrom(emailFrom, sysEmailFromName);<br>            email.setHtmlMsg(html);<br>            //附件<br>            for(File f : files){<br>                EmailAttachment att1 = new EmailAttachment();<br>                att1.setPath(f.getPath());<br>                att1.setDisposition(EmailAttachment.ATTACHMENT);<br>                att1.setDescription("attachemnt description gril 中文"); //附件描述<br>                //防止附件名乱码<br>                att1.setName(MimeUtility.encodeText(f.getName())); <br>                email.attach(att1);<br>            }<br>            email.send();<br>        }catch (EmailException | UnsupportedEncodingException e1) {<br>            e1.printStackTrace();<br>        }<br>    }<br>    <br>    /**<br>    * 抄送郵件<br>    */<br>   public static void ccHtmlEmail(String subject, String html, String receiver, String cc) <br>            throws Exception {<br>        ccHtmlEmail(subject, html, Arrays.asList(receiver.split(",")), cc, null);<br>    }<br>​<br>    /**<br>    * 抄送郵件带附件<br>    */<br>    public static void ccHtmlEmail(String subject, String html, String receiver, String cc, File file) <br>        throws Exception {<br>        ccHtmlEmail(subject, html, Arrays.asList(receiver.split(",")), cc, file);<br>    }<br>​<br>}
复制代码
五、总结
Java实现邮件发送,可以异步使用线程池批量发送多人,减小服务器的压力,可以发送单页面(可以是html语言写的页面),也可以单附件大概多附件发送邮件。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表