• java meil


    import java.util.Date;
    import java.util.List;
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    
    /**
     *  突然想起要可以写一下博客,忘记是那个版本的 mail 了 ,可以确定的是不是最新版的 ,系统是老系统来的 
     * @author mysterious
     *
     */
    public class ComplexMail { // 复杂邮件 
        // 记得开 POP3/SMTP/IMAP  服务 
        private static final String account_number = "abc@163.com";  // 也是发送人
        private static final String password = "***"; // 密钥   // //
        private static final String Email_server_address = "smtp.163.com";  // 163 :smtp.163.com qq:smtp.qq.com
        
        /*static {  // 为了防止 附件出现 文件类型变bin类型  // 未测试
            System.setProperty("mail.mime.splitlongparameters", "false");
            System.setProperty("mail.mime.charset", "UTF-8");
        }*/
        
        public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){  // // 收件人地址,html,附件
            // 创建邮件服务器链接会话 
            /*MimeMessage 类 ----- 代表整封邮件,包括MIME对象的消息头与MimeMultipart对象
            MimeBodyPart 类 ---- 代表邮件中一个MIME消息
            MimeMultiPart 类 ---- 代表一个或多个MIME消息组合而成的组合MIME消息 */
            Properties properties = new Properties();
            properties.put("mail.transport.protocol", "smtp");  // // 使用的协议(JavaMail规范要求)
            properties.put("mail.smtp.host", Email_server_address);  // // 发件人的邮箱的 SMTP 服务器地址
            properties.put("mail.smtp.auth", "true");// 连接认证
            properties.put("mail.debug", "true");// 在控制台显示连接日志信息
            //properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接  ---一般都使用
            // 而用163邮箱的时候就不需要验证码,但是 SSL 加密时(端口465/587),总是会出现各种错误,不用 SSL 加密(端口25)就可以正常发送
            
            Session session = Session.getInstance(properties);// 与邮件服务器连接会话    
            
            // 步骤二:创建Message
            MimeMessage message = new MimeMessage(session);
            // 设置邮件头(简单邮件和复杂邮件相同
            try {
                message.setFrom(new InternetAddress(account_number, "协同系统", "UTF-8"));  // 发件人  加个昵称 
                //message.setRecipients(Message.RecipientType.TO, "");
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人员", "UTF-8"));  // 收件人  价格昵称 
                message.setSubject("图纸", "UTF-8");  // 邮件主题 
                
                    MimeMultipart mimeMultipart = new MimeMultipart();
                        if(enclosure.size()>0){
                            for(int i = 0;i<enclosure.size();i++){
                                System.out.println(enclosure.get(i));
                                // 设置邮件体
                                MimeBodyPart attachment = new MimeBodyPart();    // 将所有 BodyPart 组合起来变为 Multipart   // 将最后合成的 MultiPart 交给 MimeMessage 对象
                                attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 将附件数据添加到“节点” (链接数据文件)
                                // 因中文附件名编码的问题,会产生乱码,必须使用 JavaMail 提供的工具类 MimeUtility 来包装中文字符
                                // 设置 filename 可自动生成: Content-Disposition:attachment;filename=xxx 
                                String name = enclosure.get(i);
                                attachment.setFileName(MimeUtility.encodeText(name.substring(19)));  // 可以防止 出现 文件类型变bin类型
                                
                                mimeMultipart.addBodyPart(attachment);
                            }
                        }
                        
                        
                        // html
                        System.out.println("HTML_content>>>"+HTML_content);
                        MimeBodyPart content = new MimeBodyPart();
                        content.setContent(HTML_content, "text/html;charset=utf-8");
                        
                    
                    
                    mimeMultipart.addBodyPart(content);
                    mimeMultipart.setSubType("mixed");
                    
                    
                 // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)
                 message.setContent(mimeMultipart); 
                 message.setSentDate(new Date()); // 设置发件时间
                 message.saveChanges();// 保存设置
                 
                 Transport transport = session.getTransport();// 4. 根据 Session 获取邮件传输对象
                 
                 transport.connect(Email_server_address,account_number, password);
                 
                 // 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
                 transport.sendMessage(message, message.getAllRecipients());
                 transport.close();// 关闭连接
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            //ComplexMail complexMail =new ComplexMail();
        //mailbox 是 主要内容,我这里是 HTML 的代码,AnnexDetailsList 为附件的 地址
    //complexMail.Understanding_email("", mailbox, AnnexDetailsList); // 收件人地址,html,附件 } }

    import java.util.Date;import java.util.List;import java.util.Properties;
    import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;
    /** *  突然想起要可以写一下博客,忘记是那个版本的 mail 了 ,可以确定的是不是最新版的 ,系统是老系统来的  * @author mysterious * */public class ComplexMail { // 复杂邮件 // 记得开 POP3/SMTP/IMAP  服务//private static final String account_number = "calmness_killer@163.com";  // 也是发送人//private static final String password = "XHNBBISRRRMHACWR"; // 密钥private static final String account_number = "sjst2021@163.com";  // 也是发送人private static final String password = "TFXQXEGWNOJVWOVE"; // 密钥   // // LMH@183894461st // TFXQXEGWNOJVWOVEprivate static final String Email_server_address = "smtp.163.com";  // 163 :smtp.163.com qq:smtp.qq.com/*static {  // 为了防止 附件出现 文件类型变bin类型  // 未测试System.setProperty("mail.mime.splitlongparameters", "false");System.setProperty("mail.mime.charset", "UTF-8");}*/public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){  // // 收件人地址,html,附件// 创建邮件服务器链接会话 /*MimeMessage 类 ----- 代表整封邮件,包括MIME对象的消息头与MimeMultipart对象MimeBodyPart 类 ---- 代表邮件中一个MIME消息MimeMultiPart 类 ---- 代表一个或多个MIME消息组合而成的组合MIME消息 */Properties properties = new Properties();    properties.put("mail.transport.protocol", "smtp");  // // 使用的协议(JavaMail规范要求)    properties.put("mail.smtp.host", Email_server_address);  // // 发件人的邮箱的 SMTP 服务器地址    properties.put("mail.smtp.auth", "true");// 连接认证    properties.put("mail.debug", "true");// 在控制台显示连接日志信息    //properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接  ---一般都使用    // 而用163邮箱的时候就不需要验证码,但是 SSL 加密时(端口465/587),总是会出现各种错误,不用 SSL 加密(端口25)就可以正常发送        Session session = Session.getInstance(properties);// 与邮件服务器连接会话    // 步骤二:创建Message    MimeMessage message = new MimeMessage(session);    // 设置邮件头(简单邮件和复杂邮件相同    try {message.setFrom(new InternetAddress(account_number, "审图协同系统", "UTF-8"));  // 发件人  加个昵称 //message.setRecipients(Message.RecipientType.TO, "");message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人员", "UTF-8"));  // 收件人  价格昵称 message.setSubject("审图", "UTF-8");  // 邮件主题 MimeMultipart mimeMultipart = new MimeMultipart();if(enclosure.size()>0){for(int i = 0;i<enclosure.size();i++){System.out.println(enclosure.get(i));// 设置邮件体    MimeBodyPart attachment = new MimeBodyPart();// 将所有 BodyPart 组合起来变为 Multipart   // 将最后合成的 MultiPart 交给 MimeMessage 对象    attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 将附件数据添加到“节点” (链接数据文件)    // 因中文附件名编码的问题,会产生乱码,必须使用 JavaMail 提供的工具类 MimeUtility 来包装中文字符    // 设置 filename 可自动生成: Content-Disposition:attachment;filename=xxx     String name = enclosure.get(i);    attachment.setFileName(MimeUtility.encodeText(name.substring(19)));  // 可以防止 出现 文件类型变bin类型        mimeMultipart.addBodyPart(attachment);}}    // htmlSystem.out.println("HTML_content>>>"+HTML_content);    MimeBodyPart content = new MimeBodyPart();    content.setContent(HTML_content, "text/html;charset=utf-8");                mimeMultipart.addBodyPart(content);    mimeMultipart.setSubType("mixed");         // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容) message.setContent(mimeMultipart);  message.setSentDate(new Date()); // 设置发件时间 message.saveChanges();// 保存设置  Transport transport = session.getTransport();// 4. 根据 Session 获取邮件传输对象  transport.connect(Email_server_address,account_number, password);  // 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); transport.close();// 关闭连接} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
    public static void main(String[] args) {// TODO Auto-generated method stub//ComplexMail complexMail =new ComplexMail();//complexMail.Understanding_email(toMailList.get(0).get("BY5").toString(), mailbox, AnnexDetailsList);  // 收件人地址,html,附件        }
    }

    时刻告诉自己,自己是个菜鸡......
  • 相关阅读:
    linux下安装jdk1.8
    在eclipse里面启动tomcat服务器时报错Server Tomcat v7.0 Server at localhost failed to start.
    frame使关闭口生效
    web.xml配置错误处理节点
    mac下修改mysql默认字符集为utf8
    Centos6.5关闭防火墙命令
    mysql修改
    java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build
    完美解决Linux服务器tomcat开机自启动问题
    MAC 查看java home目录
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/14393515.html
Copyright © 2020-2023  润新知