2009-05-28 50 views
15

Nếu tôi đính kèm hình ảnh vào email, làm thế nào tôi có thể đặt hình ảnh đó trong nội dung HTML? Tôi đã thử chỉ sử dụng tên tập tin như là nguồn hình ảnh nhưng điều đó dường như không hoạt động.Nhúng ảnh đính kèm vào email HTML

+0

Bạn đang cố gắng thực hiện điều này theo chương trình hoặc thông qua ứng dụng email? – biggusjimmus

Trả lời

10

Cụ thể hơn về cách bạn tạo thư HTML.

Kết quả sẽ là thông điệp nhiều phần MIME với phần văn bản/html (nếu bạn thực sự làm đúng với phần thay thế của văn bản loại/đồng bằng) và một số hình ảnh, sau đó được tham chiếu từ bên trong HTML.

Xem RFC 1813RFC 2378 để biết thêm thông tin về id nội dung trong MIME hỗn hợp và dữ liệu liên quan (được CID tham chiếu trong nguồn HTML).

+1

Nó được xây dựng dưới dạng tin nhắn MIME nhiều phần với phần html và hình ảnh.Nếu tôi đọc các RFC này một cách chính xác, có vẻ như tôi chỉ cần đặt một id nội dung trên các tệp đính kèm hình ảnh và sau đó sử dụng cid: xxx làm nguồn hình ảnh. – user83358

+0

Điều này là chính xác, nếu mọi thứ khác đã có sẵn trong tin nhắn MIME, việc nhúng chúng thật dễ dàng. – Lucero

2

Nếu điều này liên quan đến việc gửi email từ trang web bạn đang phát triển, chỉ cần giữ hình ảnh trên máy chủ của bạn và sau đó liên kết với chúng bằng cách sử dụng <img src="url"/>.

+13

... các ứng dụng thư hiện đại nhất không hiển thị những hình ảnh đó vì lý do bảo mật trừ khi được người dùng xác nhận rõ ràng. Nhúng hình ảnh nhỏ hơn tốt hơn nhiều để đảm bảo rằng thông báo sẽ hiển thị như dự định (hoặc, điều này sẽ có nhiều khả năng hơn). – Lucero

+0

@Lucero tích cực phá vỡ hành vi ứng dụng là điều cấm kỵ, theo ý kiến ​​của tôi. Người dùng đã chọn sử dụng một ứng dụng nhất định __because__ các tính năng của ứng dụng và thực tế có thể bị xúc phạm khi một người nào đó đã vượt qua chức năng này. Hầu hết các ứng dụng thư hiện đại cũng cung cấp cho bạn tùy chọn luôn xem hình ảnh từ những người gửi nhất định (hoặc thậm chí cả tên miền), cho phép người dùng quyết định xem họ có muốn xem hình ảnh của bạn trong tương lai hay không. –

+1

@NathanCox, hoàn toàn không bỏ qua chức năng này. Ứng dụng email không tải xuống hình ảnh để bảo vệ người dùng khỏi bị lộ (khi địa chỉ web được cá nhân hóa, người gửi có thể tìm hiểu khi nào thư được đọc và địa chỉ email vẫn hợp lệ và đang sử dụng). Không hiển thị hình ảnh được liên kết là biện pháp bảo mật và không có liên quan gì đến việc người dùng muốn xem hình ảnh (đó là cài đặt riêng trong một số ứng dụng email). – Lucero

3

tôi đang làm nó theo cách này

_mime = new MimeMultipart(); 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart = new MimeBodyPart(); 
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg"); 

messageBodyPart.setDataHandler(new DataHandler(fds)); 
messageBodyPart.setHeader("Content-ID", "<bgBoletin>"); 
_mime.addBodyPart(messageBodyPart); 

Và trong file HTM whe tham khảo de Content-ID trong nền theo cách này: url (cid: bgBoletin).

+0

lớp học của bạn là MAIL? ... để sử dụng "MimeMultipart" -> kích hoạt lớp học? – delive

4

Bạn có thể sử dụng cùng một cách với thuộc tính src="cid:bgBoletin" của img thẻ.

3

Câu trả lời cho câu hỏi của bạn là trong tài liệu xuân here.

mailSender.send(new MimeMessagePreparator() { 
    public void prepare(MimeMessage mimeMessage) throws MessagingException { 
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    message.setFrom("[email protected]"); 
    message.setTo("[email protected]"); 
    message.setSubject("my subject"); 
    message.setText("my text <img src='cid:myLogo'>", true); 
    message.addInline("myLogo", new ClassPathResource("img/mylogo.gif")); 
    } 
}); 

Phần nội dung của thông điệp là một trong những phần của thông điệp nhiều phần dữ liệu (lưu ý tham số thứ hai thiết lập là true vào constructor của MimeMessageHelper mà bộ thông điệp để nhắn nhiều phần dữ liệu).

Dòng message.addInline("myLogo"... thêm hình ảnh làm một phần khác của thông điệp nhiều phần.

Bạn có thể sử dụng .setText để đặt nội dung (nội dung HTML) của thông báo email.

Bạn có thể tham khảo các phần khác của email nhiều phần (hình ảnh của bạn) bằng cách sử dụng thẻ cid. Lưu ý cách thuộc tính img src là src='cid:myLogo'. cid là id nội dung của hình ảnh, được gửi dưới dạng một phần của thông điệp nhiều phần.

+0

vui lòng đăng lớp học của bạn MimeMessage MimeMessageHelper hoặc trực tiếp .jar – delive

0

Lựa chọn 01:
- đính kèm tập tin "mySignaturePictue.jpg" như kèm theo thư
- tài liệu tham khảo tập tin đính kèm này ra khỏi cơ thể (chèn nó) whith mã như:
<img src="cid:mySignaturePicture.png">

Lựa chọn 02:
- chuyển đổi hình ảnh của bạn thành một chuỗi base64: http://www.motobit.com/util/base64-decoder-encoder.asp
- chèn nó vào mailtext/html thân với mã như
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
- Nhược điểm: điều này bị chặn bởi hầu hết khách hàng và sẽ tăng kích thước thư, xem: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/

Các vấn đề liên quan