2012-09-20 27 views
5

Tôi muốn tạo tiêu đề tùy chỉnh mới trong khi gửi email, nhưng bằng cách sử dụng phương thức setHeader()addHeader() Tôi không thể làm điều đó.Tiêu đề thư tùy chỉnh bằng MIME trong Java

Làm cách nào để tạo người dùng được xác định X-"" tiêu đề email?

Trả lời

5

setHeader() phù hợp với tôi. Trong trường hợp dưới đây, tôi đặt tùy chọn mã hóa thành tiêu đề thư.

String mail_body = "<html><head></head><body><h1>Mail Body</h1><b>This is mail body of Test mail.</b></body></html>"; 
String encodingOptions = "text/html; charset=UTF-8"; 

MimeMessage message = new MimeMessage(session); 
message.setContent("Hello", "text/plain"); 
message.setSubject(mail_subject); 
message.setText(mail_body); 
message.setHeader("Content-Type", encodingOptions); 
message.setSentDate(new Date()); 

Bạn có thể thấy tiêu đề thư trong việc tiếp nhận email với chương trình mẫu https://support.google.com/mail/bin/answer.py?hl=en&answer=22454

. Mail.java

package com.test.mail; 

import java.util.Date; 
import java.util.Properties; 
import javax.mail.Address; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.SendFailedException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class Mail { 
    private String host = "smtp.gmail.com"; 

    private String mail_to = "[email protected]"; 

    private String mail_from = "[email protected]";// using gmail server 

    private String mail_subject = "Subject of this test mail"; 

    private String mail_body = "<html><head></head><body><h1>Mail Body</h1><b>This is mail body of Test mail.</b></body></html>"; 

    private String personalName = "xxx"; 

    private String encodingOptions = "text/html; charset=UTF-8"; 

    public void sendMail() throws SendFailedException { 
     try { 

      Properties props = new Properties(); 
      Authenticator auth = new Email_Autherticator(); 

      //props.put("mail.smtp.host", host); 
      props.put("mail.smtp.host", host); 
      props.put("mail.smtp.starttls.enable", "true"); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.port", "587"); 
      System.out.println(props); 

      Session session = Session.getDefaultInstance(props, auth); 

      MimeMessage message = new MimeMessage(session); 
      message.setContent("Hello", "text/plain"); 
      message.setSubject(mail_subject); 
      message.setText(mail_body); 
      message.setHeader("Content-Type", encodingOptions); 
      //message.setHeader(mail_head_name, mail_head_value); 
      message.setSentDate(new Date()); 

      Address address = new InternetAddress(mail_from, personalName); 
      message.setFrom(address); 

      Address toaddress = new InternetAddress(mail_to); 
      message.addRecipient(Message.RecipientType.TO, toaddress); 

      System.out.println(message); 

      Transport.send(message); 
      System.out.println("Send Mail Ok!"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     // return flag; 
    } 

    public static void main(String args[]) { 
     try { 
      Mail mailObj = new Mail(); 
      mailObj.sendMail(); 
     } catch (Exception e) { 

     } 
    } 
} 

Email_Autherticator.java

package com.test.mail; 
import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 

public class Email_Autherticator extends Authenticator { 
    String username = "[email protected]"; 

    String password = "password"; 

    public Email_Autherticator() { 
     super(); 
    } 

    public Email_Autherticator(String user, String pwd) { 
     super(); 
     username = user; 
     password = pwd; 
    } 

    public PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(username, password); 
    } 
} 
+1

tôi chỉnh sửa mã mẫu của tôi và thêm chương trình mẫu cho thử nghiệm. Hy vọng tốt luch !!! – swemon

+0

setHeader() hoạt động tốt. Tôi thậm chí còn có một tiêu đề thực tế do người dùng xác định cho thiết bị di động, giống như X-meta-data, giả sử rằng loại nội dung có thể gây ra sự nhầm lẫn. –

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