2012-09-20 9 views
5

में एमआईएमई का उपयोग कर कस्टम मेल हेडर ईमेल भेजते समय मैं एक नया कस्टम हेडर बनाना चाहता हूं, लेकिन setHeader() और addHeader() विधियों का उपयोग करके मैं इसे करने में असमर्थ हूं।जावा

मैं उपयोगकर्ता को X-"" ईमेल हेडर परिभाषित कैसे कर सकता हूं?

उत्तर

5

setHeader() मेरे लिए काम करता है। नीचे दिए गए मामले में, मैंने मेल हेडर में एन्कोडिंग विकल्प सेट किए हैं।

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()); 

आप 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

मैं अपने नमूना कोड को संपादित करने और परीक्षण के लिए नमूना कार्यक्रम जोड़ें। आशा है कि बहुत अच्छा !!! – swemon

+0

setHeader() ठीक काम करता है। मेरे पास मोबाइल के लिए वास्तविक उपयोगकर्ता-परिभाषित शीर्षलेख भी है, एक्स-मेटा-डेटा जैसे कुछ, यह मानते हुए कि सामग्री-प्रकार भ्रम पैदा कर सकता है। –