Java发送Email简单实现
来源:互联网 发布:linux网络编程教程 编辑:程序博客网 时间:2024/06/10 17:47
需要的jar有2个:activation.jar下载地址: JavaBeans Activation Framework (JAF)
mail.jar下载地址 : JavaMail API
找不到的可以去我的资源里面直接下载这两个jar包
activation.jar&&mail.jar
1.邮件实体类
package com.ndcims.core.utils.test;/** * TODO 邮件的实体类,记录发送邮件所需要的信息 * @author 洋洋懒懒小公举 * @Date 创建于 2017-9-7 上午10:24:27 * @version v1.0 * @Copyright 2017 www.rinpo.com Inc. All rights reserved. */public class Email { private String host; // smtp服务器 private String text; // 邮件文本内容 private String fromUser; // 发件人地址 private String fromPwd; // 用来发送邮件的用户名密码(163的授权码) private String to; // 收件人地址 private String affix; // 附件地址 private String affixName; // 附件名称 private String subject; // 邮件标题 public void setAddress(String host,String fromUser,String fromPwd, String to) { this.fromUser = fromUser; this.to = to; this.host = host; this.fromPwd = fromPwd; } public void setAffix(String affix, String affixName) { this.affix = affix; this.affixName = affixName; } public void setContent(String subject, String text) { this.subject = subject; this.text = text; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getFromUser() { return fromUser; } public void setFromUser(String fromUser) { this.fromUser = fromUser; } public String getFromPwd() { return fromPwd; } public void setFromPwd(String fromPwd) { this.fromPwd = fromPwd; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getAffix() { return affix; } public void setAffix(String affix) { this.affix = affix; } public String getAffixName() { return affixName; } public void setAffixName(String affixName) { this.affixName = affixName; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; }}
2.发送邮件方法及应用举例
package com.ndcims.cms.utilTest;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;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;import com.ndcims.core.utils.ToolKits;import com.ndcims.core.utils.test.Email;/** * TODO 发送邮件的方法类 * @author 洋洋懒懒小公举 * @Date 创建于 2017-9-7 下午5:00:04 * @version v1.0 * @Copyright 2017 www.rinpo.com Inc. All rights reserved. */public class DemoSendEmail { /** * TODO 发送邮件 * @param email * @author 洋洋懒懒小公举 * @Date Create at 2017-9-7 下午4:59:51 */ public void send(Email email) { Properties props = new Properties(); // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器) props.put("mail.smtp.host", email.getHost()); // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条) props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使 // 用(你可以在控制台(console)上看到发送邮件的过程) session.setDebug(true); // 用session为参数定义消息对象 MimeMessage message = new MimeMessage(session); try { // 加载发件人地址 message.setFrom(new InternetAddress(email.getFromUser())); // 加载收件人地址 message.addRecipient(Message.RecipientType.TO, new InternetAddress(email.getTo())); // 加载标题 if(ToolKits.isNotEmpty(email.getSubject())){ message.setSubject(email.getSubject()); } // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 设置邮件的文本内容 if(ToolKits.isNotEmpty(email.getText())){ BodyPart contentPart = new MimeBodyPart(); contentPart.setText(email.getText()); multipart.addBodyPart(contentPart); } if(ToolKits.isNotEmpty(email.getAffix()) && ToolKits.isNotEmpty(email.getAffixName())){ // 添加附件 BodyPart messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(email.getAffix()); // 添加附件的内容 messageBodyPart.setDataHandler(new DataHandler(source)); // 添加附件的标题 // MimeUtility.encodeWord或者encodeText可以保证你的中文附件标题名在发送时不会变成乱码 String filename = MimeUtility.encodeText(email.getAffixName()); filename = filename.replaceAll("\r", "").replaceAll("\n", ""); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); } // 将multipart对象放到message中 message.setContent(multipart); // 保存邮件 message.saveChanges(); // 发送邮件 Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱 transport.connect(email.getHost(), email.getFromUser(), email.getFromPwd()); /*这里可以多发几封邮件 * String[] love = {"亲","爱","的","I","Love","U"}; for (int i = 0; i < love.length; i++) { message.setSubject(love[i]); transport.sendMessage(message, message.getAllRecipients()); }*/ // 把邮件发送出去 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } /** * TODO 发送邮件示例 * @param args * @author 洋洋懒懒小公举 * @Date Create at 2017-9-7 下午4:59:35 */ public static void main(String[] args) { Email email = new Email(); // 设置发件人地址,发件人授权码、收件人地址和邮件标题 [授权码和你平时登录的密码是不一样的] email.setAddress("smtp.163.com","email1@163.com","password","email2@qq.com"); // 设置要发送附件的位置和标题 email.setAffix("f:/test.txt", "test.txt"); //设置需要发送的主题和正文 email.setContent("邮件主题", "这个是测试的邮件内容"); /** * 设置smtp服务器以及邮箱的帐号和密码 * 用QQ 邮箱作为发生者不好使 (原因不明) * 163 邮箱可以,但是必须开启 POP3/SMTP服务 和 IMAP/SMTP服务 * 因为程序属于第三方登录,所以登录密码必须使用163的授权码 */ DemoSendEmail t = new DemoSendEmail(); t.send(email); }}
这些我认为够了,其他的再根据实际情况锦上添花~
阅读全文
0 0
- Java发送Email简单实现
- Java实现Email发送
- java 发送Email 实现
- Java实现Email的发送
- java发送Email代码实现
- (java)实现发送email
- Java发送Email真的很简单
- Java email (1.简单的文本发送)
- 【java】实现发送带附件email
- java实现Email发送的例子
- 用Java实现电子邮箱email发送邮件
- python 简单email发送
- jsp实现email发送
- C# 实现Email 发送
- python实现发送email
- jodd mail技术实现简单发送email邮件
- 通过commons-email-1.5简单实现邮件发送
- java发送email
- 【scrapy ip代理池】如何解决ip被限制的问题
- 关于合格设计师的30条冷知识
- GitHub上整理的一些工具
- ipmitool配置管理网络
- SQL 查询当天,本月,本周的记录 ,日期计算
- Java发送Email简单实现
- js数组去重
- 1、MFC调用windows右键菜单
- Recyclerview批量操作源码
- PAT--1090. Highest Price in Supply Chain(dfs)
- js处理浮点数的加减乘除
- JavaScript事件---4
- HashMap之put方法源码解析
- ash的采样机制