java邮件发送的实现
邮件是在日常生活中,这篇文章主要介绍了java实现基于SMTP发送邮件的方法,实例分析了java基于SMTP服务发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下.
1.写一个MailSendProper类封装需要的属性
importjava.util.Properties; publicclassMailSendProper{ privateStringHost;//发送邮件服务器的ip privateStringPort;//发送邮件服务器的端口号 privateStringSendAddress;//邮件发送者的地址 privateStringReceiveAddress;//邮件接受者的地址 privateStringusername;//登录发送邮箱的用户名 privateStringpassword;//登录发送邮箱的密码 privatebooleanisvalidate=true;//是否需要身份验证 privateStringsubject;//邮件标题 privateStringcontent;//邮件内容 publicStringgetSubject(){ returnsubject; } publicvoidsetSubject(Stringsubject){ this.subject=subject; } publicStringgetContent(){ returncontent; } publicvoidsetContent(Stringcontent){ this.content=content; } publicStringgetHost(){ returnHost; } publicvoidsetHost(Stringhost){ Host=host; } publicStringgetPort(){ returnPort; } publicvoidsetPort(Stringport){ Port=port; } publicStringgetSendAddress(){ returnSendAddress; } publicvoidsetSendAddress(StringsendAddress){ SendAddress=sendAddress; } publicStringgetReceiveAddress(){ returnReceiveAddress; } publicvoidsetReceiveAddress(StringreceiveAddress){ ReceiveAddress=receiveAddress; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicbooleanisIsvalidate(){ returnisvalidate; } publicvoidsetIsvalidate(booleanisvalidate){ this.isvalidate=isvalidate; } publicPropertiesgetProperties(){ Propertiesproperties=newProperties(); properties.put("mail.smtp.host",this.Host); properties.put("mail.smtp.port",this.Port); properties.put("mail.smtp.auth",isvalidate?"true":"false"); returnproperties; } }
2、写一个 EmailMessage封装发送信息
publicclassEmailMessage{ privateStringtitle; privateStringcontext; privateStringtoEmail; publicEmailMessage(){ super(); } publicEmailMessage(Stringtitle,Stringcontext,StringtoEmail){ super(); this.title=title; this.context=context; this.toEmail=toEmail; } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicStringgetContext(){ returncontext; } publicvoidsetContext(Stringcontext){ this.context=context; } publicStringgetToEmail(){ returntoEmail; } publicvoidsetToEmail(StringtoEmail){ this.toEmail=toEmail; } }
3、写一个MailAttorney 邮箱密码验证器类
importjavax.mail.Authenticator; importjavax.mail.PasswordAuthentication; publicclassMailAttorneyextendsAuthenticator{ privateStringusername; privateStringpassword; publicMailAttorney(Stringusername,Stringpassword){ this.username=username; this.password=password; } //覆盖父类方法,获取密码认证器 @Override protectedPasswordAuthenticationgetPasswordAuthentication(){ returnnewPasswordAuthentication(username,password); } }
4、写一个MailSend 邮件工具类
importjava.util.Date; importjavax.mail.Address; importjavax.mail.Message; importjavax.mail.Session; importjavax.mail.Transport; importjavax.mail.internet.InternetAddress; importjavax.mail.internet.MimeMessage; importcom.VTBBS.entity.EmailMessage; publicclassMailSend{ publicstaticbooleanmailTest(MailSendPropermailsender){ MailAttorneyattorney=null; if(mailsender.isIsvalidate()){//判断是否需要身份认证 attorney=newMailAttorney(mailsender.getUsername(),mailsender.getPassword()); } //根据邮箱会话属性和密码验证器构造一个发送邮箱的seesion Sessionsession=Session.getInstance(mailsender.getProperties(),attorney); //根据session创建一个邮件消息 MessagemailMessage=newMimeMessage(session); try{ //创建邮件发送者的地址 Addressfrom=newInternetAddress(mailsender.getSendAddress()); //设置邮箱消息的发送者 mailMessage.setFrom(from); //创建邮件接收这的地址,并设置到邮件消息中 Addressto=newInternetAddress(mailsender.getReceiveAddress()); mailMessage.setRecipient(Message.RecipientType.TO,to); mailMessage.setSubject(mailsender.getSubject());//设置邮件标题 mailMessage.setSentDate(newDate());//设置发送邮件时间 mailMessage.setText(mailsender.getContent());//设置邮件内容 Transport.send(mailMessage); returntrue; }catch(Exceptione){ e.printStackTrace(); returnfalse; } } publicstaticbooleansendEmail(EmailMessagemessage){ MailSendPropermail=newMailSendProper(); mail.setHost("smtp.126.com");//smtp简单的邮件传输协议,默认端口号是25, mail.setPort("25"); mail.setIsvalidate(true);//需呀身份验证 mail.setUsername("");//设置登录用户名 mail.setPassword("");//设置发送者的密码 mail.setSendAddress("");//设置发送这的地址发送者地址和登录用户名是同一个 mail.setReceiveAddress(message.getToEmail());//设置接收者的地址 mail.setSubject(message.getTitle());//设置邮箱标题 mail.setContent(message.getContext());//设置邮箱的内容 returnmailTest(mail); } }
注意:使用的邮箱必须开启POP3/SMTP服务才能发送成功,不同的邮箱,邮箱的传输协议不一样如:
QQ邮箱:SMTP传输协议是smtp.qq.com端口25
POP3传输协议是pop3.qq.com 端口110
5、使用方法测试
publicstaticvoidmain(String[]args){ EmailMessagemessage=newEmailMessage(); Stringcode=String.valueOf(Math.random()).substring(3,9);//生成验证码 message.setTitle("邮箱验证");//邮件标题 message.setContext("尊敬的用户你好,你的验证码为"+code+"。");//邮件内容 message.setToEmail("940202884@qq.com");//要发送给谁 System.out.println(MailSend.sendEmail(message)?"发送成功":"发送失败"); }
希望本文所述对大家学习java程序设计有所帮助。