当前位置:   article > 正文

Java实现邮件发送(带附件)_java qq发送邮件 附件为何带有路径呢

java qq发送邮件 附件为何带有路径呢

1、需要导入mail.jar、activation.jar这两个邮件发送的jar包,可在网上搜索并下载

2、需要设置相关邮箱服务器,我用的是QQ邮箱,操作如下所示:开启相关服务,并生产授权码(这个代码中会用到)。



代码如下所示:

  1. package com.ecg.controller;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.GeneralSecurityException;
  4. import java.util.Properties;
  5. import javax.activation.DataHandler;
  6. import javax.activation.DataSource;
  7. import javax.activation.FileDataSource;
  8. import javax.mail.Authenticator;
  9. import javax.mail.BodyPart;
  10. import javax.mail.Message;
  11. import javax.mail.MessagingException;
  12. import javax.mail.Multipart;
  13. import javax.mail.PasswordAuthentication;
  14. import javax.mail.Session;
  15. import javax.mail.Transport;
  16. import javax.mail.internet.InternetAddress;
  17. import javax.mail.internet.MimeBodyPart;
  18. import javax.mail.internet.MimeMessage;
  19. import javax.mail.internet.MimeMultipart;
  20. import javax.mail.internet.MimeUtility;
  21. import com.sun.mail.util.MailSSLSocketFactory;
  22. /**
  23. * 邮件发送
  24. *
  25. * @author wanglongfei
  26. * E-mail: islongfei@gmail.com
  27. * @version 2017年8月27日
  28. *
  29. */
  30. public class mailtest {
  31. public static void main(String [] args) throws GeneralSecurityException, UnsupportedEncodingException
  32. {
  33. // 收件人电子邮箱
  34. String to = "2528621082@qq.com";
  35. // 发件人电子邮箱
  36. String from = "1135237317@qq.com";
  37. // 指定发送邮件的主机为 smtp.qq.com
  38. String host = "smtp.qq.com"; //QQ 邮件服务器
  39. // 获取系统属性
  40. Properties properties = System.getProperties();
  41. // 设置邮件服务器
  42. properties.setProperty("mail.smtp.host", host);
  43. properties.put("mail.smtp.auth", "true");
  44. MailSSLSocketFactory sf = new MailSSLSocketFactory();
  45. sf.setTrustAllHosts(true);
  46. properties.put("mail.smtp.ssl.enable", "true");
  47. properties.put("mail.smtp.ssl.socketFactory", sf);
  48. // 获取默认session对象
  49. Session session = Session.getDefaultInstance(properties,new Authenticator(){
  50. public PasswordAuthentication getPasswordAuthentication()
  51. { //qq邮箱服务器账户、第三方登录授权码
  52. return new PasswordAuthentication("1135237317@qq.com", "xxxxxxxxxxxx"); //发件人邮件用户名、密码
  53. }
  54. });
  55. try{
  56. // 创建默认的 MimeMessage 对象
  57. MimeMessage message = new MimeMessage(session);
  58. // Set From: 头部头字段
  59. message.setFrom(new InternetAddress(from));
  60. // Set To: 头部头字段
  61. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
  62. // Set Subject: 主题文字
  63. message.setSubject("家医康心电诊断结果");
  64. // 创建消息部分
  65. BodyPart messageBodyPart = new MimeBodyPart();
  66. // 消息
  67. messageBodyPart.setText("233333333333333");
  68. // 创建多重消息
  69. Multipart multipart = new MimeMultipart();
  70. // 设置文本消息部分
  71. multipart.addBodyPart(messageBodyPart);
  72. // 附件部分
  73. messageBodyPart = new MimeBodyPart();
  74. //设置要发送附件的文件路径
  75. String filename = "C:/Users/下雨天-lalala/Desktop/家医康心电图/十二导联同步心电图-.png";
  76. DataSource source = new FileDataSource(filename);
  77. messageBodyPart.setDataHandler(new DataHandler(source));
  78. //messageBodyPart.setFileName(filename);
  79. //处理附件名称中文(附带文件路径)乱码问题
  80. messageBodyPart.setFileName(MimeUtility.encodeText(filename));
  81. multipart.addBodyPart(messageBodyPart);
  82. // 发送完整消息
  83. message.setContent(multipart );
  84. // 发送消息
  85. Transport.send(message);
  86. System.out.println("Sent message successfully....");
  87. }catch (MessagingException mex) {
  88. mex.printStackTrace();
  89. }
  90. }
  91. }




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/591847
推荐阅读
相关标签
  

闽ICP备14008679号