直接上代码:

package com.javamail;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
import javax.mail.internet.MimeUtility;

public class SendMail
{
    //收件人邮箱地址
    private String to; 
    //发件人邮箱地址
    private String from; 
    //SMTP服务器地址
    private String smtpServer; 
    //登录SMTP服务器的用户名
    private String username ;
    //登录SMTP服务器的密码
    private String password ;
    //邮件主题
    private String subject; 
    //邮件正文
    private String content; 
    //记录所有附件文件的集合
    List<String> attachments 
        = new ArrayList<String>();
    //无参数的构造器
    public SendMail()
    {
    }
    
    public SendMail(String to , String from , String smtpServer 
        , String username , String password 
        , String subject , String content)
    { 
        this.to = to;
        this.from = from;
        this.smtpServer = smtpServer;
        this.username = username;
        this.password = password;
        this.subject = subject;
        this.content = content;
    }
    //to属性的setter方法
    public void setTo(String to)
    {
        this.to = to;
    }
    //from属性的setter方法
    public void setFrom(String from)
    {
        this.from = from;
    }
    //smtpServer属性的setter方法
    public void setSmtpServer(String smtpServer)
    {
        this.smtpServer = smtpServer;
    }
    //username属性的setter方法
    public void setUsername(String username)
    {
        this.username = username;
    }
    //password属性的setter方法
    public void setPassword(String password)
    {
        this.password = password;
    }
    //subject属性的setter方法
    public void setSubject(String subject)
    {
        this.subject = subject;
    }
    //content属性的setter方法
    public void setContent(String content)
    {
        this.content = content;
    }
    //把邮件主题转换为中文
    public String transferChinese(String strText)
    {
        try
        {
            strText = MimeUtility.encodeText(
                new String(strText.getBytes()
                , "GB2312"), "GB2312", "B");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return strText;
    }
    //增加附件,将附件文件名添加的List集合中
    public void attachfile(String fname)
    {
        attachments.add(fname);
    }
    //发送邮件
    public boolean send()
    {
        //创建邮件Session所需的Properties对象
        Properties props = new Properties();
        props.put("mail.smtp.host" , smtpServer);
        props.put("mail.smtp.auth" , "true");
        //创建Session对象
        Session session = Session.getDefaultInstance(props
            //以匿名内部类的形式创建登录服务器的认证对象
            , new Authenticator()
            {
                public PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication(username,password); 
                }
            });
        try
        {
            //构造MimeMessage并设置相关属性值
            MimeMessage msg = new MimeMessage(session);
            //设置发件人
            msg.setFrom(new InternetAddress(from));
            
            //设置收件人
            InternetAddress[] addresses = {new InternetAddress(to)};    
            msg.setRecipients(Message.RecipientType.TO , addresses);
            //设置邮件主题
            subject = transferChinese(subject);
            msg.setSubject(subject);    
           
            //整个邮件的组成方式 
            MimeMultipart msgMultipart = new MimeMultipart("related");//邮件的组成方式 
            MimeBodyPart contents = new MimeBodyPart();//正文 
            String body = "<img src = \"cid:hango\">";//cid:hango中要注意hango
            contents.setContent(body, "text/html;charset=gbk");  
            msgMultipart.addBodyPart(contents); 
            
            MimeBodyPart jpgBodyPart = new MimeBodyPart();  
            FileDataSource fds = new FileDataSource(content);  
            jpgBodyPart.setDataHandler(new DataHandler(fds));  
            jpgBodyPart.setContentID("hango");  //和上面对应
              
            msgMultipart.addBodyPart(jpgBodyPart); 
            msg.setContent(msgMultipart);  
            
            msg.setSentDate(new Date());
            // 保存对邮件的修改并写入文件中  
            msg.saveChanges();        
            Transport.send(msg);
        }
        catch (MessagingException mex)
        {
            mex.printStackTrace();
            return false;
        }
        return true;
    }
    public static void main(String[] args)
    {
//     String path = System.getProperty("user.dir")+"\\";
    String path = "E:\\apache-tomcat-6.0.29\\webapps\\javamail\\WEB-INF\\";
    String[] conf = null;
    //读取文件
try {
BufferedReader br = new BufferedReader(new FileReader(path+"config.txt"));  
String data = br.readLine();//一次读入一行,直到读入null为文件结束  
String config = "";
while(data!=null){  
if(!"".equals(data) && !data.contains("#")){
data = data.substring(data.indexOf("=")+1, data.length());
config += data.trim() + ",";
}
data = br.readLine(); //接着读下一行  
}
config = config.substring(0,config.length()-1);
conf = config.split(",");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

SendMail sendMail = new SendMail();
        sendMail.setSmtpServer(conf[0]);
        //此处设置登录的用户名
        sendMail.setUsername(conf[2]);
        //此处设置登录的密码
        sendMail.setPassword(conf[3]);
       
        //设置发送人地址
        sendMail.setFrom(conf[2]);
        //设置标题
        sendMail.setSubject(conf[4]);
        //设置内容
        sendMail.setContent(conf[5]); 
      //读取文件
try {
BufferedReader br = new BufferedReader(new FileReader(path+conf[6]));  
String data = br.readLine();//一次读入一行,直到读入null为文件结束  
while( data!=null){  
//设置收件人的地址
       sendMail.setTo(data);
       if (sendMail.send())
       {
           System.out.println("---邮件发送成功---"+data);
       }
   data = br.readLine(); //接着读下一行  
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  
        
    }
}

=========config.txt==============

################
#注释请用"#"开头
################

#SMTP服务器
server=smtp.exmail.qq.com
#SMTP端口号
port=25
#用户名
username=
#密码
password=
#邮件主题
title=222
#邮件内容
content=c:\\123.jpg
#收件人TXT
txtPath=to.txt

======to.txt====

1123@qq.com

2323023498@163.com

javamail 发送内容为图片的邮件相关推荐

  1. Java发送内嵌图片的邮件

    使用Java发送邮件时,既需要发送html文档又需要在邮件中内嵌图片(非附件形式),这里封装了一个类使用JavaMail组织的邮件发送,支持多张图片发送,并指定图片位置.注意img标签src要如下写& ...

  2. JavaMail发送带图片,带附件的邮件

    JavaMail发送带图片,带附件的邮件 简介 上一篇文章讲到了使用JavaMail来实现简单邮件的发送,这篇文章是在上一篇文章的基础上来完成的. 导入jar包 <dependency>& ...

  3. ManagementDay06(javamail 发送html内容和附件 实现用户注册时发个邮件通知)

    如果不需要做判断 可以不用手动拼接json串 可以用ctrl+shift+t 可以搜寻类名 就能找到具体的类名 回顾 1.用户--角色Span标签的样式:display:inline-block;wi ...

  4. 将PPT文件内容转换为图片放在Email邮件正文中发送

    通过Email推送统计报告.一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示. 一份统计报告中经常包含柱状图.饼图.好看的图表,这些信息要直接在Email中展示比较复杂 ...

  5. java 发送邮件昵称_利用JavaMail发送QQ邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  6. Java-使用JavaMail发送一封邮件给用户邮箱功能实现

    <---------–start---------–> 通过javamail发送一封邮件: 较早前,我已经编写好了发送邮件的工具类MailUtils.有以下要点需要注意: ① 发件箱的邮件 ...

  7. JavaMail发送和接收邮件

    一.JavaMail概述:        JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...

  8. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

  9. java发送内嵌图片邮件

    前言: 博客系统中需要邮件服务的功能,以前写过类似的功能,不过功能太简单了,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件! 准备工作: 请参考:http://www.cnblogs.com/huj ...

最新文章

  1. WebService的编写与调用
  2. linux网络批量安装上限,linux基于网络的批量安装
  3. Java操作SQL Server数据库
  4. 多样化实现Windows Phone 7本地数据访问3——DB4O
  5. UI自动化web端框架path.py代码
  6. P1850-换教室【数学期望,dp,Floyd】
  7. MX250和第三方Linux版区别,MX250和MX350哪个好一点,区别和差距在哪里?求推荐?_科技数码通...
  8. Swagger使用————接口参数注解的使用缺陷
  9. nginx重启、关闭
  10. web前端基础(08html5新标签)
  11. 【往届已EI稳定检索】第二届计算机科学与管理科技国际学术会议,多主题征稿!...
  12. 51单片机入门——8X8点阵LED
  13. Windows11 使用IE浏览器
  14. TigerGraph百万美元挑战赛奖项全揭晓,通过图技术解决全球问题的创新方案令人印象深刻
  15. Recipe 1.5. Trimming Space from the Ends of a String(Python Cookbook)
  16. 阿里妈妈Dolphin分布式向量召回技术详解
  17. 升级至android 5.0,OPPO X9007 升级到Android5.0 Color2.1(root版) 详细纪实
  18. 32位oracle10,Oracle10g32位升级到64位方法
  19. 深度学习电脑配置推荐
  20. el-checkbox点击没反应

热门文章

  1. 毕业设计 stm32单片机便携体检仪(源码+硬件+论文)
  2. 网狐国际U3D客户端无法连接旗舰大联盟服务解决
  3. 2021年江苏省安全员A证考试资料及江苏省安全员A证免费试题
  4. php学生成绩管理系统,在线录入、统计学生成绩,多种图表展示对比学生成绩
  5. go 语言中 struct 中 json 是代表什么意思
  6. totolinkn200up怎么设置_totolink300无线中继怎么设置
  7. discuz迁移到虚拟空间后无法上传图片的问题
  8. 通向实在之路暂记008:黎曼曲面和复映射
  9. 专利与论文-7:专利在哪儿?如何发现专利?思维分析方法
  10. 我们熟知的广告词经常使用这个套路