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程序设计有所帮助。