javax.mail 调用企业邮箱发送邮件
来源:互联网 发布:浮华饭店结局 知乎 编辑:程序博客网 时间:2024/05/02 00:27
项目上加的功能,刚做好,亲测,也是吃了个大亏;值得注意的几点:
1、检查smpt、pop3和imap服务是否开启,我用的163免费企业邮箱默认是开启;
2、检查包,不能冲突,再就是javax.mail-xxx.jar,不是那种javax.mail-api-xxx.jar;
3、其他就是验证类一定要加,然后“mail.smtp.auth","true",默认要设置使用验证。
废话不多说,上代码
第一个类(验证类)
import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class MyAuthenticator extends Authenticator{ String userName = null; String password = null; public MyAuthenticator() {} public PasswordAuthentication performCheck(String user, String pass){ userName = user; password = pass; return getPasswordAuthentication(); } protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(userName, password); }}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二个类(邮件信息类)
import java.util.Properties;public class MailSenderInfo{ //发送邮件的服务器和端口 private String mailServerHost; private String mailServerPort = "25"; //发送人的地址 private String fromAddress; //接受者的地址 private String toAddress; //登陆邮件发送服务器的用户名和地址 private String userName; private String passsword; //是否需要身份验证 private boolean validate; //邮件主题 private String subject; //邮件文本内容 private String content; //邮件附件的文件名 private String[] attachFileNames; /** * 配置邮件的会话属性 * */ public Properties getProperties(){ Properties pro = new Properties(); pro.put("mail.smtp.host", this.mailServerHost); pro.put("mail.smtp.port", this.mailServerPort); pro.put("mail.smtp.auth", "true"); return pro; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String[] getAttachFileNames() { return attachFileNames; } public void setAttachFileNames(String[] attachFileNames) { this.attachFileNames = attachFileNames; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String getPasssword() { return passsword; } public void setPasssword(String passsword) { this.passsword = passsword; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getToAddress() { return toAddress; } public void setToAddress(String toAddress) { this.toAddress = toAddress; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; }}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三个类(邮件发送类)
import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.util.Properties;public class SimpleMailSender { public boolean sendTextMail(MailSenderInfo mailInfo){ Properties pro = mailInfo.getProperties(); //需要身份验证,则创建一个密码验证器(认证类) MyAuthenticator authenticator = new MyAuthenticator(); authenticator.performCheck(mailInfo.getUserName(), mailInfo.getPasssword()); //根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getInstance(pro, authenticator);
//打印出验证信息 sendMailSession.setDebug(true); 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; }}
-----------------------------------------------------------------------------
测试类
出了那个Authenticator failed,查了很多资料,基本上按上面设置好就没啥大问题了import com.fndsoft.assistor.holiday.util.MailSenderInfo;import com.fndsoft.assistor.holiday.util.SimpleMailSender;public class TestSendEmail { public static void main(String[] args){ //这个类主要是设置邮件 MailSenderInfo mailInfo = new MailSenderInfo(); mailInfo.setMailServerHost("smtp.qiye.163.com");//注意服务器名称 mailInfo.setMailServerPort("25"); mailInfo.setValidate(true); mailInfo.setUserName("hai@fndsoft.cn"); mailInfo.setPasssword("***************"); mailInfo.setFromAddress("hai@fndsoft.cn"); mailInfo.setToAddress("hui@fndsoft.cn"); mailInfo.setSubject("验证用户,发送验证码"); mailInfo.setContent("【确认绑定】验证码:"+"112233"); //这个类主要来发送邮件 SimpleMailSender sms = new SimpleMailSender(); sms.sendTextMail(mailInfo); }}
这里有几篇博客可以看一下,学到了很多:
http://blog.csdn.net/wangyonglin1123/article/details/47446919
http://blog.csdn.net/karem/article/details/4646071
欢迎各位提问和指点。
0 0
- javax.mail 调用企业邮箱发送邮件
- javax.mail 调用企业邮箱发送邮件,调用个人邮箱发送邮件
- JAVA程序调用javax.mail发送邮件
- javax.mail 发送邮件
- javax mail发送邮件
- javax.mail发送邮件
- javax.mail发送邮件
- javax.mail发送邮件
- javax.mail发送邮件代码
- Java发送邮件javax.mail
- javax.mail实现邮件发送
- Java发送邮件javax.mail
- Java发送邮件javax.mail
- javax.mail实现邮件发送
- 利用javax.mail发送邮件
- Java发送邮件javax.mail
- 使用Java发送邮件(javax.mail)
- 【JAVA】使用javax.mail发送邮件
- 二分查找函数
- Android开源项目第二篇——工具库篇
- hive函数参考手册
- 【二分+map或Hash】bzoj 1567 战役地图
- 面和顶点法向量
- javax.mail 调用企业邮箱发送邮件
- [Java并发包学习六]Semaphore介绍
- 帝国CMS调用php函数使用介绍
- 集合类说明及区别
- Hadoop2.x集群动态添加删除数据节点
- Java注解(Annotation)详解(二)——自定义注解
- C/C++编译过程
- Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- [Java并发包学习七]解密ThreadLocal