JAVA实现发送QQ邮件
1.使用jar包
- mail-1.4.jar
- activation-1.1.1.jar
2.QQ邮箱需获取相应的权限
QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)
3.实现发送简单的纯文本信息
//1.创建Properties配置服务器基本信息 Properties pro=new Properties(); pro.setProperty("mail.smtp.host","邮件服务器地址"); //设置传输协议 pro.setProperty("mail.transport.protocol","smtp"); //设置用户的认证方式 pro.setProperty("mail.smtp.auth","true"); //QQ设置SSL加密 MailSSLSocketFactory sf=new MailSSLSocketFactory(); sf.setTrustAllHosts(true); pro.setProperty("mail.smtp.ssl.enable","true"); pro.put("mail.smtp.ssl.socketFactory",sf); //2.创建Session对象 Session session=Session.getInstance(pro); //开启debug模式 session.setDebug(true); //3.创建Transport对象 Transport transport=session.getTransport(); //连接邮件服务器 transport.connect("邮件服务器地址","发送人邮件地址","登录密码"); //4.创建MimeMessage对象 MimeMessage message=new MimeMessage(session); //设置发件人地址 message.setFrom(new InternetAddress(sendAddress)); //设置收件人地址 message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(getAddress)); //设置邮件主题 message.setSubject(subject,"UTF-8"); //设置邮件正文 message.setText(content, "text/html;charset=UTF-8"); //设置邮件的发送时间,默认立即发送 message.setSentDate(new Date()); //发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message,message.getAllRecipients()); //关闭连接 transport.close();
4.发送带图片的QQ邮件(其他不变修改message.setText(content, "text/html;charset=UTF-8");为以下代码即可)
MimeBodyPart image=new MimeBodyPart(); //加载图片封装为DataHandler对象 DataHandler handler=new DataHandler(new FileDataSource(图片存放的位置)); image.setDataHandler(handler); //设置图片id image.setContentID(唯一的ID字符串); //准备文本 MimeBodyPart text=new MimeBodyPart(); text.setContent("这是一个图片<img src='cid:唯一的ID字符串'>","text/html;charset=utf-8"); //拼接邮件 MimeMultipart content=new MimeMultipart(); content.addBodyPart(image); content.addBodyPart(text); content.setSubType("related");
5.发送带附件的QQ邮件(其他不变修改message.setText(content, "text/html;charset=UTF-8");为以下代码即可)
MimeBodyPart image=new MimeBodyPart(); //加载图片封装为DataHandler对象 DataHandler handler=new DataHandler(new FileDataSource(图片存放的位置)); image.setDataHandler(handler); //设置文件名 image.setFileName("唯一文件名"); //拼接邮件 MimeMultipart content=new MimeMultipart(); content.addBodyPart(image); content.setSubType("mixed");