(一)、邮件功能:javamail实现邮件发送功能(带附件发送)


public class JavaMailServiceRImpl {
    //邮箱用户名
    private static final  String  account = "********";
    // 登录密码
    private static final String password = "********";
    // smtp服务器地址,不同邮箱不同(注意)
    private static final String host = "smtp.exmail.qq.com";
    // 端口
    private static final String port = "465";
    // 协议
    private static final String protocol = "SMTP";
    //正文
    private static final String context = "您好:<br/><br/>" +
            "&nbsp&nbsp&nbsp&nbsp1234567894612303。<br/><br/>" +
            "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" +
            "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" +
            "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" +
            "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" +
            "123456<br/><br/>" +
            "提示:请不要往本邮箱发送邮件!";

    
    public void sendMail1(JavaMailModel javaMailModel) {
        //组装邮件体
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", protocol);
        props.setProperty("mail.host", host);
        props.setProperty("mail.smtp.port", port);
        // 指定验证为true
        props.setProperty("mail.smtp.auth", "true");
        // 使用SSL,企业邮箱必需 start 开启安全协议
        MailSSLSocketFactory mailSSLSocketFactory = null;
        try {
            mailSSLSocketFactory = new MailSSLSocketFactory();
            mailSSLSocketFactory.setTrustAllHosts(true);
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }
        props.put("mail.smtp.enable", "true");
        props.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.socketFactory.port", port);

        // 创建验证器
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                //第一个参数为发送邮件的邮箱名
                //第二个参数为密码(注意:普通邮箱为邮箱的授权码)
                return new PasswordAuthentication(account, password);
            }
        };
        //开启session
        Session session = Session.getInstance(props, auth);
        // 2.创建一个Message,它相当于是邮件内容
        Message message = new MimeMessage(session);
        // 设置邮件接收方,多用户发送,users中的各邮箱之间用,隔开
        //Address[] internetAddressTo = new InternetAddress().parse(users);
        try{

            message.setFrom(new InternetAddress(account)); // 设置发送者

            message.setRecipient(Message.RecipientType.TO, new InternetAddress(javaMailModel.getRecipientAddress())); //设置发送方式与接收者
            //邮件标题
            message.setSubject("稿酬单:"+javaMailModel.getSubject());
            // message.setText("这是一封激活邮件,请<a href='#'>点击</a>");
            //封装正文和附件
            Multipart multipart = mesContent(context,javaMailModel.getMailAttachmentUrl());
            //设置正文内容
            message.setContent(multipart);
            //创建 Transport用于将邮件发送
            Transport.send(message);
        }catch (Exception e){
            System.out.println("邮件发送失败"+e.....);
        }
    }

    /**
     * 组装邮件正文和附件
     * @param msg
     * @param filename
     * @return
     * @throws MessagingException
     * @throws UnsupportedEncodingException
     */
    public Multipart mesContent(String msg,String filename) throws MessagingException, UnsupportedEncodingException {
        // 创建消息部分
        BodyPart messageBodyPart = new MimeBodyPart();
        // 消息,并设置发送的格式
        messageBodyPart.setDataHandler(new DataHandler(msg,"text/html;charset=UTF-8"));
//        messageBodyPart.setText(msg);
        // 创建多重消息
        Multipart multipart = new MimeMultipart();
        // 设置文本消息部分
        multipart.addBodyPart(messageBodyPart);
        // 附件部分
        messageBodyPart = new MimeBodyPart();
        // 设置要发送附件的文件路径
        DataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        // 处理附件名称中文(附带文件路径)乱码问题
        messageBodyPart.setFileName(MimeUtility.encodeText(filename));
        multipart.addBodyPart(messageBodyPart);
        return multipart;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值