java邮件系统图片加载问题,javamail 发送邮件图片无法显示有关问题

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

经过测试在qq邮箱中可以正常显示如图:

10222511.jpg

而用新浪或者搜狐的邮箱就无法正常显示如图:

10222512.jpg

相关的代码如下,求大神指导

// 创建和环境有关的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("
" + 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

分享到:

------解决方案--------------------

10222513.gif不懂,帮顶

------解决方案--------------------

发这种邮件,我一般都不把图片放到邮件里面,而是把图片先上传到互联网上,在邮件里面加入外部图片链接。

------解决方案--------------------

你试试,

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("
" + htmlString );

allMultipart.addBodyPart(contentpart);

//设置整个邮件内容为最终组合出的MimeMultipart对象

message.setContent(allMultipart);

message.saveChanges();

Transport transport = session.getTransport();

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