Java实现文本、图片、附件复杂的邮件发送
Java实现文本、图片、附件复杂的邮件发送
public class SendComplexEmail {public static void main(String[] args) throws GeneralSecurityException, MessagingException {Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com"); 设置QQ邮件服务器prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码// QQ邮箱设置SSL加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);//1、创建定义整个应用程序所需的环境信息的 Session 对象Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {//传入发件人的姓名和授权码return new PasswordAuthentication("发送人的邮箱@qq.com","发送人的授权码");}});//2、通过session获取transport对象Transport transport = session.getTransport();//3、通过transport对象邮箱用户名和授权码连接邮箱服务器transport.connect("smtp.qq.com","发送人的邮箱@qq.com","发送人的授权码");//4、创建邮件,传入session对象MimeMessage mimeMessage = complexEmail(session);//5、发送邮件transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());//6、关闭连接transport.close();}public static MimeMessage complexEmail(Session session) throws MessagingException {//消息的固定信息MimeMessage mimeMessage = new MimeMessage(session);//发件人mimeMessage.setFrom(new InternetAddress("发送人的邮箱@qq.com"));//收件人mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("收件人的邮箱@qq.com"));//邮件标题mimeMessage.setSubject("带图片和附件的邮件");//邮件内容//准备图片数据MimeBodyPart image = new MimeBodyPart();DataHandler handler = new DataHandler(new FileDataSource("E:\\image\\01.jpg"));image.setDataHandler(handler);image.setContentID("test.png"); //设置图片id//准备文本MimeBodyPart text = new MimeBodyPart();text.setContent("这是一段文本<img src='cid:test.png'>","text/html;charset=utf-8");//附件MimeBodyPart appendix = new MimeBodyPart();appendix.setDataHandler(new DataHandler(new FileDataSource("E:\\image\\email.txt")));appendix.setFileName("test.txt");//拼装邮件正文MimeMultipart mimeMultipart = new MimeMultipart();mimeMultipart.addBodyPart(image);mimeMultipart.addBodyPart(text);mimeMultipart.setSubType("related");//文本和图片内嵌成功//将拼装好的正文内容设置为主体MimeBodyPart contentText = new MimeBodyPart();contentText.setContent(mimeMultipart);//拼接附件MimeMultipart allFile = new MimeMultipart();allFile.addBodyPart(appendix);//附件allFile.addBodyPart(contentText);//正文allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed//放到Message消息中mimeMessage.setContent(allFile);mimeMessage.saveChanges();//保存修改return mimeMessage;}
}
最新文章
- 专访万维网之父:请停止移动端专利之争(图)
- 心血漏洞(OpenSSL升级)
- 设计模式(四)行为型模式介绍及实例(上)
- Linux:NFS服务器
- MATLAB利用遗传算法求取最优解
- JMS(Java Messaging Service)基础
- 多维偏序总结(CDQ)
- 谱分析——连续傅里叶变换
- 关于Hessian矩阵
- 反爬虫原理与绕过实战
- 计算机视觉方向就业怎么样?可以做什么?
- Python 3.X 用Thinker做任意多边形的缩放图(一)
- 什么是MVC设计模式?
- 消息中心
- 自媒体必看:这3个领域别做,起步慢、收益低
- 无限法则服务器错误代码,电脑打个无限法则没事儿重启,看系统管理器。提示如图错误代码,发现看不懂...
- Redis管理
- Teager能量算子(TEO)
- 函数空间一览:从线性空间到再生核希尔伯特空间
- 自己写个双色球