java web前端邮件,javaweb之javamail

今日学习的知识是使用JAVAMail来发送邮件; 前期的准备工具,所需的jar包

2cc38355c24919f558b4bb2df971269a.png

下面给大家提供了下载jar包的地址

首先,发送邮件需要三步,1、需要得到session,2、创建MimeMessage,3、发送邮件

1、得到session

由于得到session需要用到Session.getInstance(Properties,Authenticator);

获取Properties对象

Properties props=new Properties();

props.setProperty("mail.host", "smtp.163.com");//设置发件人的SMTP服务器地址

props.setProperty("mail.smtp.auth", "true");//设置用户的认证方式

获取Authenticator

Authenticator auth=new Authenticator() {

[@Override](https://my.oschina.net/u/1162528)

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication("tmac_czr","12354czr");//设置您的授权码,不是邮箱密码哦

}

};

//这样就得到了session

Session session=Session.getInstance(props,auth);

2、创建MimeMessage

/*

* 2、创建MimeMessage

*

* */

MimeMessage msg=new MimeMessage(session);//创建邮件对象msg

msg.setFrom(new InternetAddress("tmac_czr@163.com"));//设置发件人

msg.setRecipients(RecipientType.TO, "tmac_czr@163.com");//设置收件人

msg.setRecipients(RecipientType.CC, "tmac_czr@163.com");//设置抄送

msg.setRecipients(RecipientType.BCC, "tmac_czr@163.com");//设置暗送

msg.setSubject("这是一封测试邮件");//设置邮件主题

msg.setContent("这就是一封垃圾邮件","text/html;charset=utf-8");//设置邮件正文

3、发送邮件

/*

* 3、发送

* */

Transport.send(msg);

这样就可以发送邮件啦,效果如图 ![](https://oscimg.oschina.net/oscnet/3888eff875b14a351fa8f76df15e498cb43.jpg)

**发送附带附件的邮件**

/*

* 当发送包括附件的邮件时,邮件体就为多部件形式

* 1、创建一个多部件的部件内容。MimeMultipart

* MimeMultipart就是一个集合,用来装载多个主体部件

* 2、我们需要创建两个主体部件,一个用来装载文本内容,另一个是附件

* 主体部件叫MimeBodyPart

* 3、把MimeMultipart设置给MimeMessage的内容

* */

MimeMultipart list=new MimeMultipart();//创建多部分主体

//创建MimeBodyPart

MimeBodyPart part1=new MimeBodyPart();

//设置主体部件的内容

part1.setContent("这是一个含有附件的邮件","text/html;charset=utf-8");

//把主体部件添加到list集合中

list.addBodyPart(part1);

//创建一个MimeBodyPart

MimeBodyPart part2=new MimeBodyPart();

part2.attachFile(new File("D:/PYY.jpg"));//设置附件的内容

part2.setFileName(MimeUtility.encodeText("彭于晏.jpg"));//设置显示的文件名称,其中encodeText处理乱码问题

list.addBodyPart(part2);

msg.setContent(list);//把它设置给邮件作为邮件的内容

/*

* 3、发送

* */

Transport.send(msg);

效果如图:![](https://oscimg.oschina.net/oscnet/e8750b3e39a7adef0d377051b2399603c98.jpg)

给大家介绍一个简洁的工具类MailUtils,所需jar包是itcast-tools-1.4.2.jar,上面有提供哦

使用MailUtils,可以减少代码量,方便简洁。建议先掌握上面的常规方法先呢

/*

* 1、得到session

* */

Session session=MailUtils.createSession("smtp.163.com",

"tmac_czr", "12354czr");

/*

* 2、创建邮件对象

* */

Mail mail=new Mail("tmac_czr@163.com",

"tmac_czr@163.com","tmac_czr@163.com","这是正文");

/*

* 添加附件

* */

AttachBean ab1=new AttachBean(new File("D:/PYY.jpg"),"彭于晏.jpg");

mail.addAttach(ab1);

/*

* 发送

* */

MailUtils.send(session, mail);

效果为:![](https://oscimg.oschina.net/oscnet/73257334240a318ba307d7fc1499a4ec975.jpg)

其中给大家解决一下在发送邮件时会遇到的异常,

在写完上面的代码时遇到java.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream

解决方法:将javaee5的库,变成javaee6的库

具体实现把javaee5移除

![](https://oscimg.oschina.net/oscnet/898cb7fdd4363ca23f560f94ee12c072ae7.jpg)

然后重新BulidPath->add Library->选择![](https://oscimg.oschina.net/oscnet/bf8b630a5630c913def5999cde95d5e7f0a.jpg)

这样就解决了这个异常了,但是你以为就这样结束了嘛?

接下来又报550 User has no permission(邮箱不可用)这个异常

解决方法:授权码选择开启

![](https://oscimg.oschina.net/oscnet/5338ea65ab155fa85329415ca28544daa39.jpg)

如果没有设置授权码的可以重新设置哦

大家要小心一点,如果你的授权码错误会认证失败并且报535 Error:authentication failed:这个错误就是认证失败!

本以为可以发送了的,结果又来了一个错误smtp.SMTPSendFailedException: 553 Mail from must equal authorized user=发件人邮箱写错

解决方法:保证登录人邮箱跟发信人邮箱一致

嘻嘻嘻,今天给大家分享的内容就到这啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值