下面是本人写的一段用来发送邮件的程序。这个程序现在只能用来发送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();
}
}
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();
}
}
message.setContent(mailContent, "text/plain; charset="+this.charset);
} else{
message.setContent(mailContent, "text/html; charset="+this.charset);
}
我输入如下的内容:jkk
<P align=center>rtrtrtrt</P>
rtytytry
rtytytry
rtytytry
rtytytry则程序会把段内容作为HTML发送出去,一切正常。
如果我输入如下内容:jkk
rtrtrtrt
rtytytry
rtytytry
rtytytry
rtytytry则无法讲这个邮件内容正常发送出去,接收方收到的邮件正文是空的。可见程序是根据正文了里是否含有html院士来判断邮件的格式。大家认为呢???
我输入如下的内容:jkk
<P align=center>rtrtrtrt</P>
rtytytry
rtytytry
rtytytry
rtytytry则程序会把这段内容作为HTML发送出去,一切正常。
如果我输入如下内容:jkk
rtrtrtrt
rtytytry
rtytytry
rtytytry
rtytytry则无法讲这个邮件内容正常发送出去,接收方收到的邮件正文是空的。可见程序是根据正文了里是否含有html元素来判断邮件的格式。大家认为呢???
,查看的时候记得切换到超文本的状态下看应该就可以了