java 发送邮件,邮件内容中含图片

9 篇文章 0 订阅
package com.neusoft.test;
import java.util.Properties;  
import javax.activation.DataHandler;  
import javax.activation.FileDataSource;  
import javax.mail.Authenticator;  
import javax.mail.Message;  
import javax.mail.PasswordAuthentication;  
import javax.mail.Session;  
import javax.mail.Transport;  
import javax.mail.internet.InternetAddress;  
import javax.mail.internet.MimeBodyPart;  
import javax.mail.internet.MimeMessage;  
import javax.mail.internet.MimeMultipart;  

public class AttchImgMail {  
    public boolean sendEmailWithImg(String recipient,String subject, String content,String imgPath) {
           // JavaMail需要Properties来创建一个session对象。它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.    
        Properties properties = new Properties();  
        // properties.put("mail.smtp.host", "mailcas.chinapnr.com");// 设置smtp主机  
        properties.put("mail.smtp.host", "smtp.163.com");// 设置smtp主机  
        properties.put("mail.smtp.auth", "true");// 使用smtp身份验证  
        boolean flag = false;
        try {
            MimeMessage message = new MimeMessage(Session.getInstance(properties,  
                    new Authenticator() {  
                        public PasswordAuthentication getPasswordAuthentication() {  
                            return new PasswordAuthentication(//设置发送帐号密码  
                                    "发送邮件邮箱", "密码");  
                        }  
                    }));  
            // 设置邮件的属性  
            // 设置邮件的发件人  
            message.setFrom(new InternetAddress("发件人"));  
            // 设置邮件的收件人 cc表示抄送 bcc 表示暗送  
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient 
                    ));  
            // 设置邮件的主题  
            message.setSubject(subject);  
            // 创建邮件的正文  
            MimeBodyPart text = new MimeBodyPart();  
            // setContent(“邮件的正文内容”,”设置邮件内容的编码方式”)  
            text.setContent(content,  
                    "text/html;charset=gb2312");  

            // 点到点的发送  
            // 一对多发送只要改一个地方如下:  

            // // 构建一个群发地址数组  
            // InternetAddress[] adr=new InternetAddress[toMore.length];  
            // for(int i=0;i<toMore.length;i++){ adr[i]=new  
            // InternetAddress(toMore[i]); }  
            // // Message的setRecipients方法支持群发。。注意:setRecipients方法是复数和点 到点不一样  
            // message.setRecipients(Message.RecipientType.TO,adr);  


            // 创建图片  
            MimeBodyPart img = new MimeBodyPart();   
            DataHandler dh = new DataHandler(new FileDataSource(imgPath));//图片路径  
            img.setDataHandler(dh);  
            // 创建图片的一个表示用于显示在邮件中显示  
            img.setContentID("a");  

            // 创建附件  
            // MimeBodyPart attch = new MimeBodyPart();  
            // DataHandler dh1 = new DataHandler(new FileDataSource("src//b.jpg"));  
            // attch.setDataHandler(dh1);  
            // String filename1 = dh1.getName();  
            // MimeUtility 是一个工具类,encodeText()用于处理附件字,防止中文乱码问题  
            // attch.setFileName(MimeUtility.encodeText(filename1));  
            // 关系 正文和图片的  
            MimeMultipart mm = new MimeMultipart();  
            mm.addBodyPart(text);  
            mm.addBodyPart(img);  
            mm.setSubType("related");// 设置正文与图片之间的关系  
            // 图班与正文的 body  
            MimeBodyPart all = new MimeBodyPart();  
            all.setContent(mm);  

            message.setContent(mm);  
            message.saveChanges(); // 保存修改  

            Transport.send(message);// 发送邮件  
            System.out.println("邮件发送成功");  
            flag = true;
            return flag;
        }catch(Exception ex) {
            ex.printStackTrace();
            return flag;
        }

    }



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值