我的问题是发送的时候 如果只有邮件内容没有附件的话 发送正常 但是如果有内容也有附件的时候 会把邮件的内容当做一个附件再加上要发送的附件发过去 接收的时候一个是要发送的附件 另一个是一个网页 打开的话显示的是邮件内容 不想让内容当做附件发过去 请指教
List result = new ArrayList();
final String mailuser = this.mailuser; final String password = this.password; String userName = ""; String smtp = this.host; String mailTo = this.mailTo; Vector mailCC; Vector mailBCC = this.mailBCC; String mailText = this.mailText; String mailSubject = this.mailSubject; Vector attachedFileList = this.attachedFileList; System.out.println(mailuser+"=="+password+"=="+smtp+"=="+mailBCC+"=="+mailText+"=="+mailSubject);
//获取系统Properties.
Properties props = new Properties();
//将SMTP服务器名添加到mail.smtp.host关键字的属性中
props.put("mail.smtp.host",smtp);
props.put("mail.smtp.auth","true");
Multipart mPart = new MimeMultipart();
//创建PopupAuthenticator对象 获取PasswordAuthentication
PopupAuthenticator auth = new PopupAuthenticator();
////获取基于Properties Session对象.
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(mailuser,
password);
}
});
//从Session创建一个MimeMessage.
MimeMessage message = new MimeMessage(session);
//添加发送人的信息 可以显示发送名称
Address addressFrom=null;
if(!"".equals(userName)&&null!=userName){
addressFrom = new InternetAddress(mailuser,MimeUtility.decodeText(userName));
}
else{
addressFrom = new InternetAddress(mailuser);
}
Address addressTo=null;
if(!"".equals(mailTo)&&null!=mailTo){
addressTo = new InternetAddress(mailTo);
}
//设置消息主题.
message.setSubject(mailSubject,"GB2312");
if (attachedFileList != null) {
BodyPart mBodyPart=null;
for (int i =0;i<attachedFileList.size();i++) { mBodyPart = new MimeBodyPart();
String fileNamePath = (String) attachedFileList.get(i);
String[] fileNames=fileNamePath.split("/");
String fileName = fileNames[fileNames.length-1]; //获取附件名字
String filePath = fileNamePath.substring(0,fileNamePath.length()-fileName.length());//获取附件路径
FileDataSource fds = new FileDataSource(new File(filePath,MimeUtility.decodeText(fileName))); mBodyPart.setDataHandler(new DataHandler(fds)); /*
* 设置邮件名字 需进行转码
* 原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符,
* 所以在发送中文标题的附件时需要编码成US-ASCII字符
* 有两种编码方式: B (BASE64), Q (Quoted-Printable)
*/
mBodyPart.setFileName(new String(fileName.getBytes(), "ISO8859-1"));
mPart.addBodyPart(mBodyPart);
} }
BodyPart mbp = new MimeBodyPart();
//设置消息内容.
//mbp.setText(mailText);
mbp.setDataHandler(new DataHandler(new String(mailText.getBytes(),"GBK"),"text/html;charset=gb2312"));
//添加内容主体
mPart.addBodyPart(mbp);
//设置发送时间
message.setSentDate(new Date());
message.setContent(mPart);
//设置消息来源.
message.setFrom(addressFrom);
//设置发送人域.
if(!"".equals(addressTo)&&null!=addressTo){
message.addRecipient(Message.RecipientType.TO,addressTo);
}
//设置抄送人
// if (!"".equals(mailCC)) {
// for (Enumeration fileList = attachedFileList.elements(); fileList.hasMoreElements();) {
// String mailCCName = (String) fileList.nextElement();
// message.setRecipients(Message.RecipientType.CC,
// InternetAddress.parse(mailCCName));
// }
// }
//设置暗送人
if (!"".equals(mailBCC)&&null!=mailBCC&&0!=mailBCC.size()) {
String mailBCCName=null;
for (int i=0;i<mailBCC.size();i++) {
mailBCCName = mailBCCName+(String)mailBCC.get(i)+",";
}
mailBCCName=mailBCCName.substring(0, mailBCCName.length()-1);
message.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(mailBCCName));
System.out.println(mailBCCName);
}
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, mailuser,password);
//发送消息.
transport.send(message);
transport.close();
List result = new ArrayList();
final String mailuser = this.mailuser; final String password = this.password; String userName = ""; String smtp = this.host; String mailTo = this.mailTo; Vector mailCC; Vector mailBCC = this.mailBCC; String mailText = this.mailText; String mailSubject = this.mailSubject; Vector attachedFileList = this.attachedFileList; System.out.println(mailuser+"=="+password+"=="+smtp+"=="+mailBCC+"=="+mailText+"=="+mailSubject);
//获取系统Properties.
Properties props = new Properties();
//将SMTP服务器名添加到mail.smtp.host关键字的属性中
props.put("mail.smtp.host",smtp);
props.put("mail.smtp.auth","true");
Multipart mPart = new MimeMultipart();
//创建PopupAuthenticator对象 获取PasswordAuthentication
PopupAuthenticator auth = new PopupAuthenticator();
////获取基于Properties Session对象.
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(mailuser,
password);
}
});
//从Session创建一个MimeMessage.
MimeMessage message = new MimeMessage(session);
//添加发送人的信息 可以显示发送名称
Address addressFrom=null;
if(!"".equals(userName)&&null!=userName){
addressFrom = new InternetAddress(mailuser,MimeUtility.decodeText(userName));
}
else{
addressFrom = new InternetAddress(mailuser);
}
Address addressTo=null;
if(!"".equals(mailTo)&&null!=mailTo){
addressTo = new InternetAddress(mailTo);
}
//设置消息主题.
message.setSubject(mailSubject,"GB2312");
if (attachedFileList != null) {
BodyPart mBodyPart=null;
for (int i =0;i<attachedFileList.size();i++) { mBodyPart = new MimeBodyPart();
String fileNamePath = (String) attachedFileList.get(i);
String[] fileNames=fileNamePath.split("/");
String fileName = fileNames[fileNames.length-1]; //获取附件名字
String filePath = fileNamePath.substring(0,fileNamePath.length()-fileName.length());//获取附件路径
FileDataSource fds = new FileDataSource(new File(filePath,MimeUtility.decodeText(fileName))); mBodyPart.setDataHandler(new DataHandler(fds)); /*
* 设置邮件名字 需进行转码
* 原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符,
* 所以在发送中文标题的附件时需要编码成US-ASCII字符
* 有两种编码方式: B (BASE64), Q (Quoted-Printable)
*/
mBodyPart.setFileName(new String(fileName.getBytes(), "ISO8859-1"));
mPart.addBodyPart(mBodyPart);
} }
BodyPart mbp = new MimeBodyPart();
//设置消息内容.
//mbp.setText(mailText);
mbp.setDataHandler(new DataHandler(new String(mailText.getBytes(),"GBK"),"text/html;charset=gb2312"));
//添加内容主体
mPart.addBodyPart(mbp);
//设置发送时间
message.setSentDate(new Date());
message.setContent(mPart);
//设置消息来源.
message.setFrom(addressFrom);
//设置发送人域.
if(!"".equals(addressTo)&&null!=addressTo){
message.addRecipient(Message.RecipientType.TO,addressTo);
}
//设置抄送人
// if (!"".equals(mailCC)) {
// for (Enumeration fileList = attachedFileList.elements(); fileList.hasMoreElements();) {
// String mailCCName = (String) fileList.nextElement();
// message.setRecipients(Message.RecipientType.CC,
// InternetAddress.parse(mailCCName));
// }
// }
//设置暗送人
if (!"".equals(mailBCC)&&null!=mailBCC&&0!=mailBCC.size()) {
String mailBCCName=null;
for (int i=0;i<mailBCC.size();i++) {
mailBCCName = mailBCCName+(String)mailBCC.get(i)+",";
}
mailBCCName=mailBCCName.substring(0, mailBCCName.length()-1);
message.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(mailBCCName));
System.out.println(mailBCCName);
}
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, mailuser,password);
//发送消息.
transport.send(message);
transport.close();
Multipart relatedMultipart = new MimeMultipart("related");
BodyPart alternativePart = new MimeBodyPart();
Multipart alternativeMultipart = new MimeMultipart("alternative");alternativeMultipart.addBodyPart(msgTextPart);
alternativeMultipart.addBodyPart(msgHTMLPart);
alternativePart.setContent(alternativeMultipart);LZ。。用上上面几句,再配合邮件MIME格式,你就懂了
MIME格式 什么完了?