java代码实现发送邮件,java发送html邮件

  java代码实现发送邮件,java发送html邮件

  本文实例为大家分享了整合开实现邮件发送的具体代码,供大家参考,具体内容如下

  发送邮件使用的是简单邮件传输协议协议:一般是smtp.xxx.com,比如smtp.qq.com

  接收邮件:POP3协议

  附件:哑剧

  使用爪哇发送邮件需要准备JavaMail API和爪哇激活框架

  得到两个冲突包

  mail.jar

  激活。冲突

  导入com。星期日邮件。util。mailslslocketfactory导入javax。邮件。*;导入javax。邮件。互联网。互联网地址;导入javax。邮件。互联网。mime消息;导入Java。安全。generalsecurityexception导入Java。util。属性;公众的类电子邮件{ public static void main(String[]args)抛出GeneralSecurityException,消息传递异常{ Properties prop=new Properties();//设置即时通信软件邮件服务器prop.setProperty(mail.host , SMTP。QQ。com’);//邮件发送协议道具。设置属性( mail。运输。协议, SMTP );//需要验证用户名和密码道具。设置属性( mail。SMTP。auth , true );//关于即时通信软件邮箱,还要设置加密套接字协议层加密,加上以下代码即可mailslslssocketfactory SF=new mailslssocketfactory();SF。settrustallhosts(true);prop.put(mail.smtp.ssl.enable , true );道具。放(邮件。SMTP。SSL。插座厂’,SF);//使用邮件发送邮件的5个步骤//1,创建定义整个应用程序所需的环境信息的会议对象//qq才有,其他邮箱就不用会话会话=会话。getdefaultinstance(prop,new Authenticator(){公共密码验证ation getpassword验证ation(){返回新密码验证ation( 920367321 @ QQ。com , hnjwzkfilnnnbbig );} });//开启会议的调试模式,可以看到程序发送电子邮件的运行状态/*会话。设置调试(真);*///2,通过会议得到运输对象传输ts=会话。get transport();//3,使用邮箱的用户名和授权码连接上邮件服务器ts.connect(smtp.qq.com , 920367321@qq.com , hnjwzkfilnnnbbig );//4,创建邮件MimeMessage消息=新的模拟消息(会话);//指明邮件的发件人消息。设置自(新的互联网地址( 920367321 @ QQ。com’);//指明邮件的收件人,现在发件人和收件人是一样的,就是自己给自己发message.setRecipient(Message .收件人类型。收件人,新的互联网地址( 920367321 @ QQ。com’);//邮件的标题message.setSubject(只包含文本的简单邮件);//邮件的文本内容message.setContent(你好啊, text/html;charset=UTF-8 );//5,发送邮件ts.sendMessage(消息,消息。get all recipients());

          //6,关闭连接        ts.close();    }}关于在邮件中添加附件 MIME(多用途互联网邮件扩展类型)

  MimeBodyPart类

  javax.mail.internet.MimeBodyPart类表示的是一个MIME消息,它和MimeMesssage类一样都是从Part接口结成过来

  MimeMultipart类

  javax.mail.internet.MimeMultipart是抽象类Multipart的实现子类,它用来组合多个MIME消息,一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象

  带图片的邮件,其他的代码与上面一样,只需要更改邮件的内容即可

  

//邮件的标题message.setSubject("只包含图片的简单邮件"); //准备邮件数据 //准备图片数据MimeBodyPart image = new MimeBodyPart();//图片需要数据处理,DataHandler就是这样的一个类DataHandler dh = new DataHandler(new FileDataSource("src/main/resources/01.png"));image.setDataHandler(dh);//在我们的body中放入这个处理的图片数据image.setContentID("01.png"); //准备正文数据MimeBodyPart text = new MimeBodyPart();text.setContent("这是一封带图片<img src=cid:01.png/>的邮件", "text/html;charset=UTF-8");//描述数据关系MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related"); //设置到消息中,保存修改message.setContent(mm);//把最后编辑好的邮件放到消息当中message.saveChanges();//保存修改//5,发送邮件ts.sendMessage(message,message.getAllRecipients());

带附件的邮件,操作基本没差,只需要创建一个附件的MimeBodyPart再添加到消息中即可

 

  

//准备图片数据MimeBodyPart image = new MimeBodyPart();//图片需要数据处理,DataHandler就是这样的一个类DataHandler dh = new DataHandler(new FileDataSource("src/main/resources/01.png"));image.setDataHandler(dh);//在我们的body中放入这个处理的图片数据        image.setContentID("01.png"); //附件MimeBodyPart accessory = new MimeBodyPart();accessory.setDataHandler(new DataHandler(new FileDataSource("src/main/resources/hello.txt")));accessory.setFileName("hello.txt");//设置附件的名字//准备正文数据MimeBodyPart text = new MimeBodyPart();text.setContent("这是一封带图片<img src=cid:01.png/>的邮件", "text/html;charset=UTF-8");//描述数据关系MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related"); //将图片和文本封装为一个MimeMultipartMimeBodyPart contentText = new MimeBodyPart();contentText.setContent(mm); //拼接附件MimeMultipart allFile = new MimeMultipart();allFile.addBodyPart(accessory);//附件allFile.addBodyPart(contentText);allFile.setSubType("mixed");//正文和附件都存在邮件中,所有类型设置为mixed //设置到消息中,保存修改message.setContent(allFile);//把最后编辑好的邮件放到消息当中message.saveChanges();//保存修改//5,发送邮件ts.sendMessage(message,message.getAllRecipients());

注意点:

 

  在一个web项目中:例如实现一个用户注册就给用户发一封邮件的功能,但通过之前的代码我们可以发现,发送一封邮件是需要时间的,这个时候考虑到用户体验我们不应该让用户等待,所以可以考虑使用多线程,为邮件发送单独设置为一条线程,而不影响主线程的操作!

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: