[Java] java发送邮件 发送带附件的邮件 →→→→→进入此内容的聊天室

来自 , 2020-09-15, 写在 Java, 查看 108 次.
URL http://www.code666.cn/view/1bb91f73
  1. import java.io.File;
  2. import java.util.Date;
  3.  
  4. import javax.activation.DataHandler;
  5. import javax.activation.FileDataSource;
  6. import javax.mail.Address;
  7. import javax.mail.BodyPart;
  8. import javax.mail.Message;
  9. import javax.mail.Multipart;
  10. import javax.mail.Session;
  11. import javax.mail.Transport;
  12. import javax.mail.internet.InternetAddress;
  13. import javax.mail.internet.MimeBodyPart;
  14. import javax.mail.internet.MimeMessage;
  15. import javax.mail.internet.MimeMultipart;
  16. import javax.mail.internet.MimeUtility;
  17.  
  18. /**
  19.  * 发送带附件的邮件
  20.  *
  21.  * 需要导入mail.jar
  22.  */
  23. public class AttachmentMailSender {
  24.  
  25.         public static boolean sendMail(MailSenderInfo mailInfo) {
  26.                 // 判断是否需要身份认证
  27.                 MyAuthenticator authenticator = null;
  28.                 if (mailInfo.isValidate()) {
  29.                         // 如果需要身份认证,则创建一个密码验证器
  30.                         authenticator = new MyAuthenticator(mailInfo.getUserName(),
  31.                                         mailInfo.getPassword());
  32.                 }
  33.                 // 根据邮件发送的属性和密码验证器构造一个发送邮件的session
  34.                 Session sendMailSession = Session.getInstance(mailInfo.getProperties(),
  35.                                 authenticator);
  36.                 try {
  37.                         // 根据session创建一个邮件消息
  38.                         Message mailMessage = new MimeMessage(sendMailSession);
  39.                         // 创建邮件发送者地址
  40.                         Address from = new InternetAddress(mailInfo.getFromAddress());
  41.                         // 设置邮件消息的发送者
  42.                         mailMessage.setFrom(from);
  43.                         // 创建邮件的接收者地址,并设置到邮件消息中
  44.                         Address to = new InternetAddress(mailInfo.getToAddress());
  45.                         mailMessage.setRecipient(Message.RecipientType.TO, to);
  46.                         // 设置邮件消息的主题
  47.                         mailMessage.setSubject(mailInfo.getSubject());
  48.                         // 设置邮件消息发送的时间
  49.                         mailMessage.setSentDate(new Date());
  50.  
  51.                         // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
  52.                         Multipart mainPart = new MimeMultipart();
  53.                         // 创建一个包含HTML内容的MimeBodyPart
  54.                         BodyPart html = new MimeBodyPart();
  55.                         // 设置HTML内容
  56.                         html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
  57.                         mainPart.addBodyPart(html);
  58.                         // 为邮件添加附件
  59.                         String[] attachFileNames = mailInfo.getAttachFileNames();
  60.                         if (attachFileNames != null && attachFileNames.length > 0) {
  61.                                 // 存放邮件附件的MimeBodyPart
  62.                                 MimeBodyPart attachment = null;
  63.                                 File file = null;
  64.                                 for (int i = 0; i < attachFileNames.length; i++) {
  65.                                         attachment = new MimeBodyPart();
  66.                                         // 根据附件文件创建文件数据源
  67.                                         file = new File(attachFileNames[i]);
  68.                                         FileDataSource fds = new FileDataSource(file);
  69.                                         attachment.setDataHandler(new DataHandler(fds));
  70.                                         // 为附件设置文件名
  71.                                         attachment.setFileName(MimeUtility.encodeWord(
  72.                                                         file.getName(), "GBK", null));
  73.                                         mainPart.addBodyPart(attachment);
  74.                                 }
  75.                         }
  76.                         // 将MiniMultipart对象设置为邮件内容
  77.                         mailMessage.setContent(mainPart);
  78.                         // 发送邮件
  79.                         Transport.send(mailMessage);
  80.                         return true;
  81.  
  82.                 } catch (Exception e) {
  83.                         e.printStackTrace();
  84.                         return false;
  85.                 }
  86.         }
  87.  
  88.         public static void main(String[] args) {
  89.                 // 创建邮件信息
  90.                 MailSenderInfo mailInfo = new MailSenderInfo();
  91.                 mailInfo.setMailServerHost("smtp.sina.com.cn");
  92.                 mailInfo.setMailServerPort("25");
  93.                 mailInfo.setValidate(true);
  94.                 mailInfo.setUserName("***");
  95.                 mailInfo.setPassword("***");
  96.                 mailInfo.setFromAddress("***@sina.com");
  97.                 mailInfo.setToAddress("***@163.com");
  98.                 mailInfo.setSubject("MyMail测试");
  99.                 mailInfo.setContent("我的邮件测试\n\rMy test mail\n\r");
  100.  
  101.                 String[] fileNames = new String[3];
  102.                 fileNames[0] = "C:/temp/new.txt";
  103.                 fileNames[1] = "C:/temp/test.wav";
  104.                 fileNames[2] = "C:/temp/mary_photo.jpg";
  105.                 mailInfo.setAttachFileNames(fileNames);
  106.  
  107.                 AttachmentMailSender.sendMail(mailInfo);
  108.         }
  109. }
  110.  

回复 "java发送邮件 发送带附件的邮件"

这儿你可以回复上面这条便签

captcha