博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用javamail发送邮件
阅读量:6756 次
发布时间:2019-06-26

本文共 5955 字,大约阅读时间需要 19 分钟。

在java web项目我们经常会使用到发送邮件,比如发送告警通知,对实时性要求不太高的项目就可以发邮件,毕竟是免费的嘛,这里写了几段java发送邮件的代码,参考,自己又改了一下,比如发送附件,多个抄送人等。

依赖jar包:

1、MailSenderInfo邮件信息类

package com.chen.util;import java.util.Properties;/** * 邮件信息 * */public class MailSenderInfo {        // 发送邮件的服务器的IP和端口        private String mailServerHost;        private String mailServerPort = "25";        // 邮件发送者的地址        private String fromAddress;        // 邮件接收者的地址        private String toAddress;        // 登陆邮件发送服务器的用户名和密码        private String userName;        private String password;        // 是否需要身份验证        private boolean validate = false;        // 邮件主题        private String subject;        // 邮件的文本内容        private String content;        // 邮件附件的文件名        private String[] attachFileNames;     // 邮件的接收者,可以有多个    private String[] receivers;    // 邮件的抄送者,可以有多个    private String[] ccs;        /** *//**         * 获得邮件会话属性         */        public Properties getProperties(){          Properties p = new Properties();          p.put("mail.smtp.host", this.mailServerHost);          p.put("mail.smtp.port", this.mailServerPort);          p.put("mail.smtp.auth", validate ? "true" : "false");          return p;        }        public String getMailServerHost() {          return mailServerHost;        }        public void setMailServerHost(String mailServerHost) {          this.mailServerHost = mailServerHost;        }       public String getMailServerPort() {          return mailServerPort;        }       public void setMailServerPort(String mailServerPort) {          this.mailServerPort = mailServerPort;        }       public boolean isValidate() {          return validate;        }       public void setValidate(boolean validate) {          this.validate = validate;        }       public String[] getAttachFileNames() {          return attachFileNames;        }       public void setAttachFileNames(String[] fileNames) {          this.attachFileNames = fileNames;        }       public String getFromAddress() {          return fromAddress;        }        public void setFromAddress(String fromAddress) {          this.fromAddress = fromAddress;        }       public String getPassword() {          return password;        }       public void setPassword(String password) {          this.password = password;        }       public String getToAddress() {          return toAddress;        }        public void setToAddress(String toAddress) {          this.toAddress = toAddress;        }        public String getUserName() {          return userName;        }       public void setUserName(String userName) {          this.userName = userName;        }       public String getSubject() {          return subject;        }       public void setSubject(String subject) {          this.subject = subject;        }       public String getContent() {          return content;        }       public void setContent(String textContent) {          this.content = textContent;        }        public String[] getCcs() {        return ccs;    }    public void setCcs(String[] ccs) {        this.ccs = ccs;    }    public String[] getReceivers() {        return receivers;    }    public void setReceivers(String[] receivers) {        this.receivers = receivers;    }}

2、MyAuthenticator  该类发送邮件是鉴权用,继承Authenticator

package com.chen.util;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;/** * 该类发送邮件是鉴权用 * 继承Authenticator *  * */public class MyAuthenticator extends Authenticator{       String userName=null;       String password=null;               public MyAuthenticator(){       }       public MyAuthenticator(String username, String password) {            this.userName = username;            this.password = password;        }        protected PasswordAuthentication getPasswordAuthentication(){           return new PasswordAuthentication(userName, password);       }   }

3、MailUtil  发送邮件工具类

package com.chen.util;import java.util.Date;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class MailUtil {	//protected static final String serverHost=PropertiesUtil.getPropertiesByKey("prop.properties", "ServerHost");	protected static final String serverHost="smtp.qq.com";	protected static final String serverPort = "25";	protected static final String userName = "******@qq.com";	protected static final String password = "********";		/**	 * 发送邮件给多个抄送人	 * */	public static boolean sendMailtoMultiCC(MailSenderInfo mailInfo){        MyAuthenticator authenticator = null;        if (mailInfo.isValidate())         {            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());        }        Session sendMailSession = Session.getInstance(mailInfo.getProperties(), authenticator);        //sendMailSession.setDebug(true);        try {        	//创建邮件            Message mailMessage = new MimeMessage(sendMailSession);            // 创建邮件发送者地址            Address from = new InternetAddress(mailInfo.getFromAddress());            mailMessage.setFrom(from);            // 创建邮件的接收者地址,并设置到邮件消息中            Address to = new InternetAddress(mailInfo.getToAddress());            mailMessage.setRecipient(Message.RecipientType.TO, to);            // 获取抄送者信息            String[] ccs = mailInfo.getCcs();            if (ccs != null){                // 为每个邮件接收者创建一个地址                Address[] ccAdresses = new InternetAddress[ccs.length];                for (int i=0; i

使用方法可以参考第3个类MailUtil的main方法里调用发送邮件的方法sendMailtoMultiCC,可以抄送给多人,可以发送多个附件。

借鉴了,增加了多个抄送人和附件,如有兴趣可以移步。

转载于:https://www.cnblogs.com/chenjack/p/6298225.html

你可能感兴趣的文章
Highcharts的一些属性
查看>>
xadmin 组件拓展自定义使用
查看>>
5.14 数据库函数,流程控制
查看>>
Django 中间件
查看>>
学城项目知识点整理及源码
查看>>
sqlServer,oracle中case关键字的用法
查看>>
表驱动法之保险费率
查看>>
苹果硅胶套市场空间上百亿:合作厂商利润达30%
查看>>
娇俏2011年春装
查看>>
备份还原oracle数据库
查看>>
[转载] AUML——FIPA Modeling Technical Committee
查看>>
Samba Server Configuration - Simple
查看>>
【ZZ】大型数据库应用解决方案总结 | 菜鸟教程
查看>>
Apr. 2th
查看>>
电脑—切难题实用篇
查看>>
栅格那点儿事(四D)
查看>>
反向代理服务器的工作原理(转)
查看>>
MVC前后台获取Action、Controller、ID名方法 以及 路由规则
查看>>
fnb2b分支拉取注意事项
查看>>
电脑上没有iis组件,怎么才能安装iis?
查看>>