javamail发送邮件的实例代码分享
2023-06-13 09:15:04 时间
注意:要先导入javamail的mail.jar包。
以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。
第一个类:MailSenderInfo.java
复制代码代码如下:
以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。
第一个类:MailSenderInfo.java
packagecom.util.mail;
importjava.util.Properties;
/**
*发送邮件需要使用的基本信息
*/
publicclassMailSenderInfo{
//发送邮件的服务器的IP和端口
privateStringmailServerHost;
privateStringmailServerPort="25";
//邮件发送者的地址
privateStringfromAddress;
//邮件接收者的地址
privateStringtoAddress;
//登录邮件发送服务器的用户名和密码
privateStringuserName;
privateStringpassword;
//是否需要身份验证
privatebooleanvalidate=false;
//邮件主题
privateStringsubject;
//邮件的文本内容
privateStringcontent;
//邮件附件的文件名
privateString[]attachFileNames;
/**
*获得邮件会话属性
*/
publicPropertiesgetProperties(){
Propertiesp=newProperties();
p.put("mail.smtp.host",this.mailServerHost);
p.put("mail.smtp.port",this.mailServerHost);
p.put("mail.smtp.auth",validate?"true":"false");
returnp;
}
publicStringgetMailServerHost(){
returnmailServerHost;
}
publicvoidsetMailServerHost(StringmailServerHost){
this.mailServerHost=mailServerHost;
}
publicStringgetMailServerPort(){
returnmailServerPort;
}
publicvoidsetMailServerPort(StringmailServerPort){
this.mailServerPort=mailServerPort;
}
publicbooleanisValidate(){
returnvalidate;
}
publicvoidsetValidate(booleanvalidate){
this.validate=validate;
}
publicString[]getAttachFileNames(){
returnattachFileNames;
}
publicvoidsetAttachFileNames(String[]attachFileNames){
this.attachFileNames=attachFileNames;
}
publicStringgetFromAddress(){
returnfromAddress;
}
publicvoidsetFromAddress(StringfromAddress){
this.fromAddress=fromAddress;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetToAddress(){
returntoAddress;
}
publicvoidsetToAddress(StringtoAddress){
this.toAddress=toAddress;
}
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
publicStringgetSubject(){
returnsubject;
}
publicvoidsetSubject(Stringsubject){
this.subject=subject;
}
publicStringgetContent(){
returncontent;
}
publicvoidsetContent(Stringcontent){
this.content=content;
}
}
第二个类:SimpleMailSender.java
packagecom.util.mail;
importjava.util.Date;
importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.AddressException;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
/**
*简单邮件(不带附件)发送器
*/
publicclassSimpleMailSender{
/**
*以文本格式发送邮件
*@parammailInfo待发送的邮件的信息
*/
publicbooleansendTextMail(MailSenderInfomailInfo){
//判断是否需要身份认证
MyAuthenticatorauthenticator=null;
Propertiespro=mailInfo.getProperties();
if(mailInfo.isValidate()){
//如果需要身份认证,则创建一个密码验证器
authenticator=newMyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
//根据邮件会话属性和密码验证器构造一个发送邮件的session
SessionsendMailSession=Session.getDefaultInstance(pro,authenticator);
try{
//根据session创建一个邮件消息
MessagemailMessage=newMimeMessage(sendMailSession);
//创建邮件发送者地址
Addressfrom=newInternetAddress(mailInfo.getFromAddress());
//设置邮件消息的发送者
mailMessage.setFrom(from);
//创建邮件的接收者地址,并设置到邮件消息中
Addressto=newInternetAddress(mailInfo.getToAddress());
//Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO,to);
//设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
//设置邮件消息发送的时间
mailMessage.setSentDate(newDate());
//设置邮件消息的主要内容
StringmailContent=mailInfo.getContent();
mailMessage.setText(mailContent);
//发送邮件
Transport.send(mailMessage);
returntrue;
}catch(AddressExceptione){
e.printStackTrace();
}catch(MessagingExceptione){
e.printStackTrace();
}
returnfalse;
}
/**
*以Html格式发送邮件
*@parammailInfo待发送的邮件的信息
*/
publicbooleansendHtmlMail(MailSenderInfomailInfo){
//判断是否需要身份认证
MyAuthenticatorauthenticator=null;
Propertiespro=mailInfo.getProperties();
if(mailInfo.isValidate()){
//如果需要身份认证,则创建一个密码验证器
authenticator=newMyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
//根据邮件会话属性和密码验证器构造一个发送邮件的session
SessionsendMailSession=Session.getDefaultInstance(pro,authenticator);
try{
//根据session创建一个邮件消息
MessagemailMessage=newMimeMessage(sendMailSession);
//创建邮件发送者地址
Addressfrom=newInternetAddress(mailInfo.getFromAddress());
//设置邮件消息的发送者
mailMessage.setFrom(from);
//创建邮件的接收者地址,并设置到邮件消息中
Addressto=newInternetAddress(mailInfo.getToAddress());
//Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO,to);
//设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
//设置邮件消息发送的时间
mailMessage.setSentDate(newDate());
//MimeMultipart类是一个容器类,包含MimeBodyPart类型的对象
MultipartmainPart=newMimeMultipart();
//创建一个包含HTML内容的MimeBodyPart
BodyParthtml=newMimeBodyPart();
//设置HTML内容
html.setContent(mailInfo.getContent(),"text/html;charset=utf-8");
mainPart.addBodyPart(html);
//将mainPart对象设置为邮件内容
mailMessage.setContent(mainPart);
//发送邮件
Transport.send(mailMessage);
returntrue;
}catch(AddressExceptione){
e.printStackTrace();
}catch(MessagingExceptione){
e.printStackTrace();
}
returnfalse;
}
}
第三个类:MyAuthenticator.java
packagecom.util.mail;
importjavax.mail.*;
/**
*身份认证
*/
publicclassMyAuthenticatorextendsAuthenticator{
StringuserName=null;
Stringpassword=null;
publicMyAuthenticator(){
}
publicMyAuthenticator(Stringusername,Stringpassword){
this.userName=username;
this.password=password;
}
@Override
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication(userName,password);
}
}
下面给出使用上面三个类的代码:
packagecom.util.mail;
/**
*发送邮件
*/
publicclassMail{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//这个类主要是设置邮件
MailSenderInfomailInfo=newMailSenderInfo();
mailInfo.setMailServerHost("smtp.126.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("test@126.com");
mailInfo.setPassword("test");
mailInfo.setFromAddress("test@126.com");
mailInfo.setToAddress("test@qq.com");
mailInfo.setSubject("设置邮箱标题如http://www.guihua.org中国桂花网");
mailInfo.setContent("设置邮箱内容如http://www.guihua.org中国桂花网是中国最大桂花网站==");
//这个类主要来发送邮件
SimpleMailSendersms=newSimpleMailSender();
sms.sendTextMail(mailInfo);
sms.sendHtmlMail(mailInfo);
}
}
最后,给出朋友们几个注意的地方:
1、使用此代码你可以完成你的javamail的邮件发送功能。三个类缺一不可。
2、这三个类我打包是用的com.util.mail包,如果不喜欢,你可以自己改,但三个类文件必须在同一个包中
3、不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。
4、另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("han2000lei@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。
5、关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。
相关文章
- JAX-WS手动配置实例
- VB实现鼠标绘图实例代码分享
- 分享一个使用Mongodb实现打卡签到系统的实例代码
- PHP伪造referer实例代码
- asp.net获取图片高度和宽度实例代码
- PHP翻页实例代码
- 使用Cookies保存网站历史浏览记录实例代码
- jQuery中创建实例与原型继承揭秘
- php文件操作实例代码
- 二叉搜索树实例练习
- JAVA包装类及自动封包解包实例代码
- JavaScript验证码的实例代码(附效果图)
- android根据分辨率自动调整字体大小的实例代码
- c#.net动态读取走马灯代码实例分享
- ASP.NET连接SQL数据库的简单实例代码
- js获取url参数代码实例分享(JS操作URL)
- java从mysql导出数据的具体实例
- Java压缩文件ZIP实例代码
- android实现简单的画画板实例代码
- PHP中soap的用法实例
- php常用字符串比较函数实例汇总
- Delphi实现碰撞球体完整实例代码
- C#聊天程序服务端与客户端完整实例代码
- js实现的类似于asp数据字典的数据类型代码实例
- Android根据电话号码获得联系人头像实例代码