javaweb之javamail

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

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

mail-1.4.7.jar https://mvnrepository.com/artifact/javax.mail/mail/1.4.7

activation-1.1.1.jar https://mvnrepository.com/artifact/javax.activation/activation/1.1.1

itcast-tools-1.4.2.jar http://www.pc6.com/softview/SoftView_459437.html

首先,发送邮件需要三步,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=发件人邮箱写错
	解决方法:保证登录人邮箱跟发信人邮箱一致
	
	嘻嘻嘻,今天给大家分享的内容就到这啦

转载于:https://my.oschina.net/u/3535428/blog/3002862

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值