下面是本人写的一段用来发送邮件的程序。这个程序现在只能用来发送HTML格式的邮件,如果发送纯文本的邮件 则无法收到邮件内容。请问:这个程序如何修改才可以既用来发送HTML格式的邮件又可以用来发送纯文本格式的邮件??请开发过JAVAMAIL的兄弟看看。
         public void sendSimpleEmail(String to) throws MessagingException{
MailAuthenticator ma;
ma=new MailAuthenticator(from,password);
Properties props = System.getProperties();
props.put("mail.smtp.host", host); 
props.put("mail.smtp.auth","true");
Session session=Session.getInstance(props,ma);
MimeMessage msg=new MimeMessage(session); 
try {
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO,
                           new InternetAddress(to)); 
if(this.important.equals("1")){
msg.addHeader("X-Priority",this.important);
} msg.setSubject(subject); 
MimeBodyPart mbp_text=new MimeBodyPart();                           //发送HTML格式的邮件用下面标记为AAA的语句置入邮件内容
mbp_text.setContent(content, "text/html;charset=GBK"); //AAA //发送纯文本格式的邮件用下面标记为BBB的语句置入邮件内容
                           //mbp_text.setContent(content);//BBB msg.setSentDate(new java.util.Date()); 

MimeMultipart mp = new MimeMultipart(); mp.setSubType("related"); 
mp.addBodyPart(mbp_text);
Enumeration efile=file.elements();
while(efile.hasMoreElements()){
MimeBodyPart mbp_file=new MimeBodyPart();
filename=efile .nextElement().toString().trim();
FileDataSource fds=new FileDataSource(filename);
mbp_file.setDataHandler(new DataHandler(fds));
BASE64Encoder enc = new BASE64Encoder();
filename ="=?GBK?B?"+enc.encode(fds.getNam().
getBytes())+"?="; 
mbp_file.setFileName(filename); mp.addBodyPart(mbp_file);
}
// file.removeAllElements();
msg.setContent(mp);
msg.setSentDate(new Date());

Transport.send(msg); 
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();

}

解决方案 »

  1.   

    if(contentType.equals("text")){
                    message.setContent(mailContent, "text/plain; charset="+this.charset);
                } else{
                    message.setContent(mailContent, "text/html; charset="+this.charset);
                }
      

  2.   

    vacuumboy你好,请问怎样获得页面提交的邮件内容的类型contentType呀??请你告诉我,结帖给分。
      

  3.   

    vacuumboy你好,请问怎样获得页面提交的邮件内容的类型contentType呀??请你告诉我,结帖给分。
      

  4.   

    contentType是根据你的需要设置的,程序本身是没办法判断的。你上面的程序之所以不能发送纯文本的邮件是因为少了"text/plain; charset="+this.charset这个参数
      

  5.   

    我觉得javamail API应该是可以判断页面输入待发送的邮件内容是何种格式的( 纯文本/html)。
    我输入如下的内容:jkk
    <P align=center>rtrtrtrt</P>
    rtytytry
    rtytytry
    rtytytry
    rtytytry则程序会把段内容作为HTML发送出去,一切正常。
    如果我输入如下内容:jkk
    rtrtrtrt
    rtytytry
    rtytytry
    rtytytry
    rtytytry则无法讲这个邮件内容正常发送出去,接收方收到的邮件正文是空的。可见程序是根据正文了里是否含有html院士来判断邮件的格式。大家认为呢???
      

  6.   

    我觉得javamail API应该是可以判断页面输入待发送的邮件内容是何种格式的( 纯文本/html)。
    我输入如下的内容:jkk
    <P align=center>rtrtrtrt</P>
    rtytytry
    rtytytry
    rtytytry
    rtytytry则程序会把这段内容作为HTML发送出去,一切正常。
    如果我输入如下内容:jkk
    rtrtrtrt
    rtytytry
    rtytytry
    rtytytry
    rtytytry则无法讲这个邮件内容正常发送出去,接收方收到的邮件正文是空的。可见程序是根据正文了里是否含有html元素来判断邮件的格式。大家认为呢???
      

  7.   

    vacuumboy(好好学习,天天向上) 你好,能不能帮我上面的程序改成可以发送含图片的html格式的邮件
      

  8.   

    可以发的呀,你只要用<img>标签插入一图片然后发送的时候选择以html的格式发送即message.setContent(mailContent, "text/html; charset="+this.charset);
    ,查看的时候记得切换到超文本的状态下看应该就可以了
      

  9.   

    谢谢,是可以的。你有没有可以嵌到jsp页面上的“在线HTML编辑工具”呀,也叫“多媒体编辑工具”