失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java发送电子邮件(使用mail.jar和activation.jar)

Java发送电子邮件(使用mail.jar和activation.jar)

时间:2024-06-17 03:10:16

相关推荐

Java发送电子邮件(使用mail.jar和activation.jar)

本文参考使用技术Java+JSP+Servlet

本次源代码可在本人网盘下载:/s/1jIdV7r4

循序渐进介绍如何使用Java发送电子邮件

一、J2EE+前台Bootstrap实现发送邮件

二、Java代码发送邮件

三、SpringMVC架构+前台layUI改造邮件发送项目

J2EE+前台Bootstrap实现发送邮件

(1)需求场景描述

1、在网站注册成功后,会发送邮件到注册者邮箱,提示使用邮箱激活账号。

2、访问某网站用户账号锁定时,会发送一个连接到邮箱来解锁账号,或者找回密码等。

(2)运行截图

(3)代码实现

1.新建Dynamic Web Project工程

2.引入mail.jar和activation.jar

3.项目目录结构如图

4.配置发件人163邮箱的SMTP服务器、账户以及密码等参数

配置mail.properties文件之后即可运行,若运行报错,检测Jre和Tomcat环境(替换成本机的),本次用的是JDK1.8和Tomcat8如下图所示

Java代码发送邮件

为了更清晰的理解代码,现用Java工程描述

Java Project忽略界面层,web服务器,用控制台打印的形式,是架构师构建测试项目的首选,本例使用大家都能懂的main主方法,正规来说应该使用JUnit单元测试。

下载并加载JavaMail API

JavaMail API目前的版本为JavaMail API 1.4.3。可以从如下地址下载:

/products/javamail/downloads/index.html

下载后,建立jarFile文件夹,贴入mail.jar和activation.jar文件并且Add to Build Path

编写邮件身份验证类

用来验证SMTP服务器身份。程序继承了Authenticator类,它主要用来实现登录邮件服务器时的认证。它包含两个属性:username和password,分别用来存储认证时所需的用户名和密码信息。程序重写了Authenticator类的getPasswordAuthentication()方法,该方法返回PasswordAuthentication对象,此对象包含通过STMP服务器身份验证所需的用户名和密码,供认证时session调用。

Auth类,它继承了Authenticator类

package com.zhi.mail;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class Auth extends Authenticator {private String username = "";private String password = "";public Auth(String username, String password) {this.username = username;this.password = password;}public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);} }

编写发送邮件类

代码说明:该程序为一个邮件发送通用类的程序,SendMail构造方法实现对发送邮件身份的认证,获得Session对象。该方法中SMTPHost、Port、MailUsername、MailPassword分别表示所使用的SMTP服务器、服务器的smtp端口、用户名和密码。sendingMimeMail()方法为发送邮件的方法,在该方法需要传入的参数中,MailFrom为发件人电子信箱,MailTo为收件人电子信箱,MailCopyTo为抄送人电子信箱,MailBCopyTo为暗送人电子信箱,MailSubject为发送邮件主题,MailBody为发送邮件正文。sendingMimeMail()返回boolean类型,表示是否发送成功。发送邮件时先调用构造方法SendMail()创建邮件发送对象,然后调用sendingMimeMail()方法发送。

SendMail类

package com.zhi.mail;import java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class SendMail {private Properties props; //系统属性private Session mailSession; //邮件会话对象private MimeMessage mimeMsg; //MIME邮件对象public SendMail(String SMTPHost, String Port, String MailUsername, String MailPassword) {Auth au = new Auth(MailUsername, MailPassword);//设置系统属性props=java.lang.System.getProperties(); //获得系统属性对象props.put("mail.smtp.host", SMTPHost); //设置SMTP主机props.put("mail.smtp.port", Port); //设置服务端口号props.put("mail.smtp.auth", "true"); //同时通过验证//获得邮件会话对象 mailSession = Session.getInstance(props, au);}public boolean sendingMimeMail(String MailFrom, String MailTo,String MailCopyTo, String MailBCopyTo, String MailSubject,String MailBody) {try { //创建MIME邮件对象mimeMsg=new MimeMessage(mailSession);//设置发信人mimeMsg.setFrom(new InternetAddress(MailFrom));//设置收信人if(MailTo!=null){mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(MailTo));} //设置抄送人if(MailCopyTo!=null){mimeMsg.setRecipients(javax.mail.,InternetAddress.parse(MailCopyTo));}//设置暗送人if(MailBCopyTo!=null){mimeMsg.setRecipients(javax.mail.Message.RecipientType.BCC,InternetAddress.parse(MailBCopyTo));}//设置邮件主题 mimeMsg.setSubject(MailSubject,"utf-8");//设置邮件内容,将邮件body部分转化为HTML格式mimeMsg.setContent(MailBody,"text/html;charset=utf-8");//发送邮件Transport.send(mimeMsg);return true;} catch (Exception e) {e.printStackTrace();return false;}}}

编写SendDemo类进行测试

package com.zhi.demo;import com.zhi.mail.SendMail;public class SendDemo {/*** 若频繁发送,腾讯服务器会将邮件自动识别为垃圾邮件并且屏蔽* @param args*/public static void main(String[] args) {String SMTPHost="";String Port="";String MailUsername="conglinyu1.0@"; //直接用我的邮件进行发送测试String MailPassword=""; //密码请勿修改SendMail sendMail=new SendMail(SMTPHost,Port,MailUsername,MailPassword);String MailFrom=null; //发件人String MailTo=null; //收件人String MailCopyTo=null; //抄送人String MailBCopyTo=null; //暗送人String MailSubject="JavaSE发送邮件测试"; //邮件主题String MailBody="引用mail.jar和activation.jar实现邮件发送!"; //邮件内容//发送邮件boolean isSend=sendMail.sendingMimeMail(MailFrom, MailTo, MailCopyTo, MailBCopyTo, MailSubject, MailBody);if(isSend){System.out.println("邮件发送成功");}else{System.out.println("邮件发送失败");}}}

运行main主方法发送邮件

SpringMVC架构+前台layUI改造邮件发送项目

待续...

其他

SMTP

SMTP (Simple Mail Transfer Protocol,简单邮件传输协议)由RFC 821定义。它定义了发送电子邮件的机制。

POP

POP(Post Office Protocol)代表邮局协议

IMAP

IMAP是更高级的用于接收消息的协议。在RFC 2060中被定义,IMAP代表Internet消息访问协议(Internet Message Access Protocol),目前使用的是版本4,因此也称IMAP4。

MIME

MIME代表多用途Internet邮件扩展标准(Multipurpose Internet Mail Extensions)。它不是邮件传输协议,但对传输内容的消息、附件及其他内容定义了格式。

如果觉得《Java发送电子邮件(使用mail.jar和activation.jar)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。