javamail发送邮件的简单实例 您所在的位置:网站首页 nginx配置示例 javamail发送邮件的简单实例

javamail发送邮件的简单实例

2023-03-03 01:22| 来源: 网络整理| 查看: 265

        首先需要在sun公司官网下载javamail包,解压后将其中的mail.jar加到工程里面去。下载地址:http://download.oracle.com/otn-pub/java/javamail/1.4.7/javamail1_4_7.zip

第一个类:SimpleMailSender.java

package com.util.mail;import java.util.Date;import java.util.Properties;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;public class SimpleMailSender{ /** * 以文本格式发送邮件 * * @param mailInfo 待发送的邮件的信息 */ public boolean sendTextMail(MailSenderInfo mailInfo) { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); if (mailInfo.isValidate()) { // 如果需要身份认证,则创建一个密码验证器 authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro, authenticator); try { // 根据session创建一个邮件消息 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); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // 设置邮件消息的主要内容 String mailContent = mailInfo.getContent(); mailMessage.setText(mailContent); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } /** * 以HTML格式发送邮件 * * @param mailInfo 待发送的邮件信息 */ public static boolean sendHtmlMail(MailSenderInfo mailInfo) { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); // 如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro, authenticator); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO, to); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); // 设置HTML内容 html.setContent(mailInfo.getContent(), "text/html; "); mainPart.addBodyPart(html); // 将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; } }

 

第二个类:MyAuthenticator.java

package com.util.mail;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;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); }}

 

第三个类:MailSenderInfo.java

package com.util.mail;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; /** */ /** * 获得邮件会话属性 */ 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; } }

 

第四个是测试类 Test.java

package com.util.mail;public class Test{ public static void main(String[] args) { // 这个类主要是设置邮件 MailSenderInfo mailInfo = new MailSenderInfo(); mailInfo.setMailServerHost("smtp.163.com");// 如果你的是qq邮箱,那么此处换成:smtp.qq.com mailInfo.setMailServerPort("25"); mailInfo.setValidate(true); mailInfo.setUserName("[email protected]");// 如果你的是qq邮箱,那么此处换成你的qq邮箱账号 mailInfo.setPassword("g4ed7a");// 您的邮箱密码 mailInfo.setFromAddress("[email protected]");// 如果你的是qq邮箱,那么此处换成你的qq邮箱账号 //目的邮箱,就是指你要发送到哪个邮箱的邮箱账号 mailInfo.setToAddress("[email protected]"); // 如果你的是qq邮箱,那么此处换成你的qq邮箱账号 mailInfo.setSubject("标题标题标题"); mailInfo.setContent("内容内容内容内容内容内容内容内容内容内容内容"); // 这个类主要来发送邮件 SimpleMailSender sms = new SimpleMailSender(); sms.sendTextMail(mailInfo);// 发送文体格式 sms.sendHtmlMail(mailInfo);// 发送html格式 }}

 

 说明:1、使用此代码你可以完成你的javamail的邮件发送功能。三个类缺一不可。

2、根据原文作者说:”不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。 “,而本人亲自测试未发现有此问题。

3、另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("[email protected]");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。  

javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 最简单的JAVAMail发送邮件实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 javamail发送邮件的简单实例 Leetcode Populating Next Right Pointers in Each Node II sgu 544 Chess Championship 贪心算法之证明要点----算法导论16.2---5 Linux随机数发生器导致Apache进程全部Block的问题 HDU 1715 大菲波数 大数 javamail发送邮件的简单实例 html5介绍 Java_io体系之概念与整体结构——02 C语言头文件 黑马程序员-----程序员之路_____正则表达式 SQL安装失败 关于PJSIP介绍的的一篇很好的文章 Linux基础知识汇总 web站点崩溃原因


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有