zoukankan      html  css  js  c++  java
  • (三)JavaMail发送附件

    代码如下:

    package cases;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.Date;
    import java.util.Properties;
    
    /**
     * @description:
     * @author: lv
     * @time: 2020/5/25 17:53
     */
    public class MailSendUtil {
    
        public static void main(String[] args) throws Exception{
            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);
    
            //创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("发件人@qq.com", "授权码");
                }
            });
    
    
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
    
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
    
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "发件人@qq.com", "授权码");
    
            //4、创建邮件
    
            //创建邮件对象
            MimeMessage message = new MimeMessage(session);
            // 设置发送时间
            message.setSentDate(new Date());
            //设置多个收件人
            String users = "发件人1@qq.com,发件人2@qq.com";
            Address[] internetAddressTo = new InternetAddress().parse(users);
    
            //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
            message.setRecipients(Message.RecipientType.TO, internetAddressTo);
            //邮件的标题
            message.setSubject("测试报告");
    
    
            Multipart multipart = new MimeMultipart();
            //邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent("测试报告见附件", "text/html;charset=utf-8");
            multipart.addBodyPart(contentPart);
            
            BodyPart attachmentPart = new MimeBodyPart();
            DataSource source = new FileDataSource("./test-output/index.html");
            DataHandler attachment = new DataHandler(source);
            attachmentPart.setDataHandler(new DataHandler(source));
            //避免中文乱码的处理
            attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
            multipart.addBodyPart(attachmentPart);
    
            //邮件的文本内容
            message.setContent(multipart);
            message.saveChanges();
    
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
    
            ts.close();
        }
    }
    

    发送多个附件,需要参考上面的代码,大概的思路

    Multipart multipart = new MimeMultipart();   
                //邮件正文  
                BodyPart contentPart = new MimeBodyPart();  
                contentPart.setContent(mail.getContent(), "text/html;charset=utf-8");  
                multipart.addBodyPart(contentPart);  
                //邮件附件  
                if(attachments != null) {  
                    for(File attachment : attachments) {  
                        BodyPart attachmentPart = new MimeBodyPart();  
                        DataSource source = new FileDataSource(attachment);  
                        attachmentPart.setDataHandler(new DataHandler(source));  
                        //避免中文乱码的处理  
                        attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));  
                        multipart.addBodyPart(attachmentPart);  
                    }  
                }  
                message.setContent(multipart);  
                //保存邮件  
                message.saveChanges();  
                Transport.send(message);  
    

      

      

  • 相关阅读:
    【CV论文阅读】ExtremeC3Net: 使用高级C3模块的极轻量人像分割模型
    【pytorch基础】pytorch的初始化
    【CV基础】如何理解空洞卷积(dilated convolution)?
    关于研发规范化的一些实践和思考
    vuecli入门项目实战
    C/C++用.ico图片替换.exe图标(VS2017)(转)
    C# 多线程修改控件时,提示在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(转)
    C#读取ACCESS提示“未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
    ubuntu的常用命令
    C# DataTable 按整形字段排序
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12966135.html
Copyright © 2011-2022 走看看