javaMail发送邮件(支持单发、群发)
来源:互联网 发布:做微课用什么软件 编辑:程序博客网 时间:2024/05/22 00:35
1.所需夹包:javaMail.jar 、activation.jar
2.实现步骤:
(1).定义一个邮件消息类;
(2).定义一个服务器邮箱登录验证信息类;
(3).定义一个邮件发送类(核心类)
3.具体代码:
<pre name="code" class="java">package cn.my.utils;import java.util.List;/** * 邮件发送的信息实体类@date 2014.10.13 * @author wangbowen * @version 1.0 * */public class SimpleMail {/** * 发送邮件者的地址 */public String fromAddress;/** * 登录邮件服务器的用户名 */public String userName;/** * 登录邮件服务器的密码 */public String userPassword;/** * 接受邮件者的地址 */public String toAddress;/** * 多个接受邮件者地址 */public List<String> recipients;/** * 接受邮件的主题 */public String subject;/** * 邮件的内容 */public String content;/** * @return the fromAddress */public String getFromAddress() {return fromAddress;}/** * @param fromAddress * the fromAddress to set */public void setFromAddress(String fromAddress) {this.fromAddress = fromAddress;}/** * @return the userName */public String getUserName() {return userName;}/** * @param userName * the userName to set */public void setUserName(String userName) {this.userName = userName;}/** * @return the userPassword */public String getUserPassword() {return userPassword;}/** * @param userPassword * the userPassword to set */public void setUserPassword(String userPassword) {this.userPassword = userPassword;}/** * @return the toAddress */public String getToAddress() {return toAddress;}/** * @param toAddress * the toAddress to set */public void setToAddress(String toAddress) {this.toAddress = toAddress;}/** * @return the subject */public String getSubject() {return subject;}/** * @param subject * the subject to set */public void setSubject(String subject) {this.subject = subject;}/** * @return the content */public String getContent() {return content;}/** * @param content * the content to set */public void setContent(String content) {this.content = content;} /** * @return the recipients */public List<String> getRecipients() {return recipients;}/** * @param recipients the recipients to set */public void setRecipients(List<String> recipients) {this.recipients = recipients;}publicSimpleMail(List<String> recipients, String subject, String content) {this.recipients = recipients;this.subject = subject;this.content = content;}}
package cn.my.utils;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;/** * 服务器邮箱登录验证 * @author wangbowen@date2014.10.13 * @version 1.0 * */public class MailAuthenticator extends Authenticator { /** * 用户名(登录邮箱) */ private String userName = null;/** * 密码 */ private String userPass = null;/** * 无参 */public MailAuthenticator() {}/** * 初始化邮箱和密码 * @param userName 用户名 * @param userPass 密码 */public MailAuthenticator(String userName, String userPass) {this.userName = userName;this.userPass = userPass;}/** * 取值 * @return "" */@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, userPass);}/** * @return the userName */public String getUserName() {return userName;}/** * @param userName the userName to set */public void setUserName(String userName) {this.userName = userName;}/** * @return the userPass */public String getUserPass() {return userPass;}/** * @param userPass the userPass to set */public void setUserPass(String userPass) {this.userPass = userPass;}}
package cn.my.utils; import java.util.Date;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;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;import javax.mail.internet.MimeMessage.RecipientType; /** * 简单邮件发送器,可单发,群发@date 2014.10.13。 * @author wangbowen * @version 1.0 * */public class SimpleMailSender { /** * 发送邮件的props文件 */ public Properties props; /** * DUANKOU */ public static final int mailserverport = 25; /** * 邮件服务器登录验证 */ public transient MailAuthenticator authenticator; /** * 邮箱session */ public Session session; public Transport transport; /** * 初始化邮件发送器 * * @param smtpHostName * SMTP邮件服务器地址 * @param username * 发送邮件的用户名(地址) * @param password * 发送邮件的密码 */ public SimpleMailSender(final String smtpHostName, final String username, final String password) { init(username, password, smtpHostName); } /** * 初始化邮件发送器 * * @param username * 发送邮件的用户名(地址),并以此解析SMTP服务器地址 * @param password * 发送邮件的密码 */ public SimpleMailSender(final String username, final String password) { //通过邮箱地址解析出smtp服务器,对大多数邮箱都管用 String str = username.split("@")[1]; String smtpHostName = "smtp." +str; init(username, password, smtpHostName); } /** * 初始化 * * @param username * 发送邮件的用户名(地址) * @param password * 密码 * @param smtpHostName * SMTP主机地址 */ private void init(String username, String password, String smtpHostName) { // 初始化props props = new Properties(); props.put("mail.smtp.host", smtpHostName); props.put("mail.smtp.port",String.valueOf(mailserverport) ); props.put("mail.smtp.starttls.enable","true" ); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.socketFactory.port", String.valueOf(mailserverport)); props.put("mail.smtp.socketFactory.fallback", "false"); props.put("mail.transport.protocol", "smtp"); props.put("mail.from", username); LoggerUtils.info("初始化props成功...."); // 验证 authenticator = new MailAuthenticator(username, password); // 创建session session = Session.getDefaultInstance(props, authenticator); } /** * 发送邮件 * * @param recipient * 收件人邮箱地址 * @param subject * 邮件主题 * @param content * 邮件内容 * @throws AddressException * @throws MessagingException */ @SuppressWarnings("static-access")public void sendOne(String recipient, String subject, Object content) throws AddressException, MessagingException { // 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); // 设置发信人 message.setFrom(new InternetAddress(authenticator.getUserName())); // 设置收件人 message.setRecipient(RecipientType.TO, new InternetAddress(recipient)); // 设置主题 message.setSubject(subject); // 设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); message.saveChanges(); // 发送 transport = session.getTransport((String) props.get("mail.transport.protocol")); // 真正的连接邮件服务器并进行身份验证 transport.connect("smtp."+authenticator.getUserName().split("@")[1],authenticator.getUserName(),authenticator.getUserPass()); transport.send(message); } /** * 群发邮件 * * @param recipients * 收件人们 * @param subject * 主题 * @param content * 内容 * @throws AddressException * @throws MessagingException */@SuppressWarnings("static-access")public boolean send(List<String> recipients, String subject, Object content) throws AddressException, MessagingException { try{ // 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); // 设置发信人 message.setFrom(new InternetAddress(authenticator.getUserName())); // 设置收件人们 final int num = recipients.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(recipients.get(i)); } message.setRecipients(RecipientType.TO, addresses); // 设置主题 message.setSubject(subject); // 设置邮件内容 message.setContent(content.toString(), "text/html;charset=utf-8"); //发送时间 message.setSentDate(new Date()); message.saveChanges(); // 发送 transport = session.getTransport((String) props.get("mail.transport.protocol")); // 真正的连接邮件服务器并进行身份验证 transport.connect("smtp."+authenticator.getUserName().split("@")[1],authenticator.getUserName(),authenticator.getUserPass()); transport.send(message); LoggerUtils.info("发送成功...."); transport.close(); }catch(Exception e){ e.printStackTrace(); LoggerUtils.info("发送失败...."); return false; } return true; } /** * 群发邮件含附件 * * @param recipients * 收件人们 * @param subject * 主题 * @param content * 内容 * @param filepath 附件 * @throws AddressException * @throws MessagingException */@SuppressWarnings("static-access")public boolean sendMail(List<String> recipients, String subject, Object content,String filepath) throws AddressException, MessagingException { try{ // 创建mime类型邮件 final MimeMessage message = new MimeMessage(session); // 设置发信人 message.setFrom(new InternetAddress(authenticator.getUserName())); // 设置收件人们 final int num = recipients.size(); InternetAddress[] addresses = new InternetAddress[num]; for (int i = 0; i < num; i++) { addresses[i] = new InternetAddress(recipients.get(i)); } message.setRecipients(RecipientType.TO, addresses); // 设置主题 message.setSubject(subject); Multipart m = new MimeMultipart(); BodyPart bp = new MimeBodyPart(); bp.setContent(content.toString(), "text/html; charset=utf-8"); // 加入附件 FileDataSource ds = new FileDataSource(filepath); bp.setDataHandler(new DataHandler(ds)); bp.setFileName(MimeUtility.encodeText(ds.getName())); m.addBodyPart(bp); // 设置邮件内容 message.setContent(m); //发送时间 message.setSentDate(new Date()); message.saveChanges(); // 发送 transport = session.getTransport((String) props.get("mail.transport.protocol")); // 真正的连接邮件服务器并进行身份验证 transport.connect("smtp."+authenticator.getUserName().split("@")[1],authenticator.getUserName(),authenticator.getUserPass()); transport.send(message); LoggerUtils.info("发送成功...."); transport.close(); }catch(Exception e){ e.printStackTrace(); LoggerUtils.info("发送失败...."); return false; } return true; } /** * 发送邮件 * * @param recipient * 收件人邮箱地址 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException */ public void send(String recipient, SimpleMail mail) throws AddressException, MessagingException { sendOne(recipient, mail.getSubject(), mail.getContent()); } /** * 群发邮件 * * @param recipients * 收件人们 * @param mail * 邮件对象 * @throws AddressException * @throws MessagingException */ public boolean sendMails(SimpleMail mail) throws AddressException, MessagingException { boolean sendResult = send(mail.getRecipients(),mail.getSubject(), mail.getContent()); if(sendResult){ return true; } return false; } /** * 异步发送邮件 * @param mail 邮件对象 * @return */ public void sendMailByAsynchronous(final SimpleMail mail){ new Thread(new Runnable() { public void run() { try { send(mail.getRecipients(),mail.getSubject(), mail.getContent()); } catch (Exception ex) { LoggerUtils.error("邮件发送失败"+ex); } } }).start(); }}
package cn.my.utils;import java.util.ArrayList;import java.util.List;import javax.mail.MessagingException;import javax.mail.internet.AddressException;/** * 测试邮件发送 * @author wangbowen * */public class test {public static void main(String[] args) {try {//分割邮件String [] arrayemail ={"1213@qq.com","45555@qq.com"};//接受邮件者List<String> recipients = new ArrayList<String>();for (int j = 0; j < arrayemail.length; j++) {<span style="white-space:pre"></span>recipients.add(arrayemail[j]);<span style="white-space:pre"></span>}//从properties文件中读取邮件发送者的邮箱以及密码String userName = PropertiesUtil.findData("usermail.properties", "mail.username"); String password = PropertiesUtil.findData("usermail.properties", "mail.password");SimpleMailSender sm = new SimpleMailSender(userName,password);sm.sendMails(new SimpleMail(recipients,"通知","成功"));} catch (AddressException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
5.mail.properties文件,可以根据你自己的需要设置相应的用户邮箱和密码
mail.username=1212222@163.commail.password=123456
6.注意:使用qq邮箱发送邮件需要设置SMTP开启服务
第一步,看图操作如下:
打开QQ邮箱,在设置-帐户,然后再看下图示:
把:POP3/SMTP服务,IMAP/SMTP服务,Exchange服务,CardDAV/CalDAV服务都选择上,保存这样,便可以轻松使用邮箱客户端来收发QQ邮件了!相关OUTLOOK设置如下:
可以看到,填写好接收邮件服务器:pop.qq.com,发送邮件服务器:smtp.qq.com;然后用户名与密码,设置好了后,便可以收QQ邮件了;
<
0 0
- javaMail发送邮件(支持单发、群发)
- 发送邮件(单发群发的解决方案)
- java mail发送邮件(单发和群发)
- 单发群发邮件
- LumiSoft.Net,IMAP,邮件发送,邮件单发,邮件线程群发,Winfrom部分控件功能大汇总
- javaMail实现邮件发送,群发功能
- javaMail Java实现邮件发送,群发功能,java发送邮件
- javaMail Java实现邮件发送,群发功能,java发送邮件
- Javax.mail实现单发和群发邮件
- 发送邮件,支持群发,非常好用
- 发送邮件,支持群发,非常好用
- 发送邮件,支持群发,非常好用
- JavaMail--群发HTML邮件
- 使用JavaMail群发邮件
- 【J2ME】J2ME发送短信(单发与伪群发)
- C#发送邮件小程序(支持群发,附件)
- C#发送邮件小程序(支持群发,附件)
- C#发送邮件小程序(支持群发,附件)
- 一个好看的php验证码源码
- jquery validform 插件使用
- 阿里魅族高层“豪赌”千万为了啥?入口利益之争
- 网络笔记突破500
- 微信开发公共服务平台开发(.Net) - 网页授权获取用户基本信息
- javaMail发送邮件(支持单发、群发)
- 常见网络攻击
- linux shell各种字符串截取方法
- webx入门
- CentOS下搭建DNS服务器
- 移动端(html5)微信公众号下用keyup实时监控input值的变化无效
- inet_ntoa、 inet_aton、inet_addr 详细介绍
- 关于IP网络号和主机号的原理
- Linux md5sum命令的使用