Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

วิธีส่งอีเมลแบบ HTML ด้วย JSP

ส่งอีเมลแบบ HTML ใช้ MimeMessage.setContent(content, "text/html") แทน setText()

ตัวอย่าง SendHtmlEmail.jsp

<%@ page import="java.io.*,java.util.*,javax.mail.*" %>
<%@ page import="javax.mail.internet.*,javax.activation.*" %>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
    String to = "recipient@gmail.com";
    String from = "sender@gmail.com";
    String host = "localhost";
    
    Properties props = System.getProperties();
    props.setProperty("mail.smtp.host", host);
    
    Session session = Session.getDefaultInstance(props);
    
    try {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject("HTML Email Subject");
        
        // HTML Content
        String htmlContent = "<h1>Welcome!</h1>" +
                             "<p>This is <b>HTML</b> email.</p>" +
                             "<ul><li>Item 1</li><li>Item 2</li></ul>";
        
        message.setContent(htmlContent, "text/html; charset=UTF-8");
        Transport.send(message);
        
        out.println("HTML Email sent successfully!");
    } catch (MessagingException e) {
        e.printStackTrace();
        out.println("Error: " + e.getMessage());
    }
%>

จุดสำคัญ

  • setContent(htmlString, "text/html") - บอก mail client ว่าเป็น HTML
  • ควรระบุ charset (UTF-8) เพื่อรองรับภาษาไทย
  • สามารถใส่ HTML ใหญ่ๆ ได้ (CSS inline, images ผ่าน CID)
  • ใช้ MimeMultipart ("related") สำหรับ embedded images

Embedded Images (Inline)

MimeMultipart multipart = new MimeMultipart("related");
// HTML part
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("วิธีส่งอีเมลแบบ HTML ด้วย JSP", "text/html");
multipart.addBodyPart(htmlPart);
// Image part
BodyPart imagePart = new MimeBodyPart();
imagePart.setDataHandler(new DataHandler(new FileDataSource("logo.png")));
imagePart.setHeader("Content-ID", "");
multipart.addBodyPart(imagePart);
message.setContent(multipart);

ข้อกำหนดเดียวกับ text email

  • JavaMail API, JAF
  • SMTP server
  • Authentication config (ถ้าจำเป็น)