当前位置: 代码迷 >> Java Web开发 >> javamail 发送邮件图片无法显示有关问题
  详细解决方案

javamail 发送邮件图片无法显示有关问题

热度:10321   发布时间:2016-04-10 23:55:32.0
javamail 发送邮件图片无法显示问题
经过测试在qq邮箱中可以正常显示如图:
而用新浪或者搜狐的邮箱就无法正常显示如图:
相关的代码如下,求大神指导
// 创建和环境有关的Session对象. 该session对象中包含了连接邮件服务器的地址.. 端口.. 协议

Properties properties = new Properties();

// 指定发送的协议

properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.transport.protocol", "smtp");

// 指定邮件服务器的地址

// properties.setProperty("mail.host", "smtp.qq.com");

// 通过javamail发送邮件的时候,会把具体的发送命令打印出来

// properties.setProperty("mail.debug", "true");

Session session = Session.getDefaultInstance(properties);

// 创建一个代表一封邮件的Message对象

Message message = new MimeMessage(session);

// 设置发件人...

try {

message.setFrom(new InternetAddress("1576091527@qq.com"));

/** BCC:密送CC:抄送To:发送 */

// message.setRecipient(RecipientType.TO, new
// InternetAddress("1576091527@qq.com,1367384576@qq.com"));
message
.setRecipients(
RecipientType.TO,
InternetAddress
.parse("1576091527@qq.com,zhouxingruoxu@sohu.com,zhouxingruoxu@sina.com"));
// 设置邮件的主题

message.setSubject("这是一个简单的邮件");

Multipart multipart = new MimeMultipart("mixed");

// 创建一个装显示图片的html

MimeBodyPart html = new MimeBodyPart();

// 要使用cid来指定具体的资源id

html.setContent("<img src='cid:123456'><br>" + htmlString + "",
"text/html;charset=UTF-8");

// 创建一个图片的mimebodypart

MimeBodyPart image = new MimeBodyPart();

// 将一个图片做具体的数据出过来

image.setDataHandler(new DataHandler(new FileDataSource(new File(
"F:\\张邮件\\3.jpg"))));

image.setContentID("123456");

multipart.addBodyPart(html);

multipart.addBodyPart(image);

// 设置一个复杂类型的邮件内容

message.setContent(multipart);

// 可以通过Session对象找得到发送对象Transport...

Transport transport = session.getTransport();

// 通过发送对象去连接邮件服务器... 提供链接服务器的用户名而不是邮件的地址,不带@符号的

// transport.connect("1576091527", "1610745319521");
transport.connect("smtp.qq.com", 25, "1576091527", "1610745319521");
// 连接上后发送邮件(Message),发送给指定的地址

transport.sendMessage(message, message.getAllRecipients());

// 关闭连接

transport.close();

} catch (Exception e) {

e.printStackTrace();

}

}
javaMail

------解决方案--------------------
不懂,帮顶
------解决方案--------------------
发这种邮件,我一般都不把图片放到邮件里面,而是把图片先上传到互联网上,在邮件里面加入外部图片链接。
------解决方案--------------------
你试试,

    public void sendMessage(Session session,String body) throws Exception
    {
        
        MimeMessage message = new MimeMessage(session);
essage.setFrom(new InternetAddress("1576091527@qq.com"));

/** BCC:密送CC:抄送To:发送 */

// message.setRecipient(RecipientType.TO, new
// InternetAddress("1576091527@qq.com,1367384576@qq.com"));
message
.setRecipients(
RecipientType.TO,
InternetAddress
.parse("1576091527@qq.com,zhouxingruoxu@sohu.com,zhouxingruoxu@sina.com"));
// 设置邮件的主题

message.setSubject("这是一个简单的邮件");
     
        MimeMultipart allMultipart = new MimeMultipart("mixed");
        

        
        //创建代表邮件正文和附件的各个MimeBodyPart对象  
        MimeBodyPart contentpart = createContentInnerImage("<img src='cid:123456'><br>" + htmlString );
        allMultipart.addBodyPart(contentpart);

        //设置整个邮件内容为最终组合出的MimeMultipart对象  
        message.setContent(allMultipart);
        
        message.saveChanges();
        
        
Transport transport = session.getTransport();

// 通过发送对象去连接邮件服务器... 提供链接服务器的用户名而不是邮件的地址,不带@符号的