2009-03-04 03:32:22 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2008 The Android Open Source Project
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2011-02-10 02:47:43 +00:00
|
|
|
package com.android.emailcommon.internet;
|
|
|
|
|
|
|
|
import com.android.emailcommon.mail.BodyPart;
|
|
|
|
import com.android.emailcommon.mail.MessagingException;
|
|
|
|
import com.android.emailcommon.mail.Multipart;
|
2009-03-04 03:32:22 +00:00
|
|
|
|
|
|
|
import java.io.BufferedWriter;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.io.OutputStreamWriter;
|
|
|
|
|
|
|
|
public class MimeMultipart extends Multipart {
|
|
|
|
protected String mPreamble;
|
|
|
|
|
|
|
|
protected String mContentType;
|
|
|
|
|
|
|
|
protected String mBoundary;
|
|
|
|
|
|
|
|
protected String mSubType;
|
|
|
|
|
|
|
|
public MimeMultipart() throws MessagingException {
|
|
|
|
mBoundary = generateBoundary();
|
|
|
|
setSubType("mixed");
|
|
|
|
}
|
|
|
|
|
|
|
|
public MimeMultipart(String contentType) throws MessagingException {
|
|
|
|
this.mContentType = contentType;
|
|
|
|
try {
|
|
|
|
mSubType = MimeUtility.getHeaderParameter(contentType, null).split("/")[1];
|
|
|
|
mBoundary = MimeUtility.getHeaderParameter(contentType, "boundary");
|
|
|
|
if (mBoundary == null) {
|
|
|
|
throw new MessagingException("MultiPart does not contain boundary: " + contentType);
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
throw new MessagingException(
|
|
|
|
"Invalid MultiPart Content-Type; must contain subtype and boundary. ("
|
|
|
|
+ contentType + ")", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public String generateBoundary() {
|
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
|
sb.append("----");
|
|
|
|
for (int i = 0; i < 30; i++) {
|
|
|
|
sb.append(Integer.toString((int)(Math.random() * 35), 36));
|
|
|
|
}
|
|
|
|
return sb.toString().toUpperCase();
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getPreamble() throws MessagingException {
|
|
|
|
return mPreamble;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setPreamble(String preamble) throws MessagingException {
|
|
|
|
this.mPreamble = preamble;
|
|
|
|
}
|
|
|
|
|
2010-05-07 22:26:31 +00:00
|
|
|
@Override
|
2009-03-04 03:32:22 +00:00
|
|
|
public String getContentType() throws MessagingException {
|
|
|
|
return mContentType;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setSubType(String subType) throws MessagingException {
|
|
|
|
this.mSubType = subType;
|
|
|
|
mContentType = String.format("multipart/%s; boundary=\"%s\"", subType, mBoundary);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void writeTo(OutputStream out) throws IOException, MessagingException {
|
|
|
|
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
|
|
|
|
|
|
|
|
if (mPreamble != null) {
|
|
|
|
writer.write(mPreamble + "\r\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
for (int i = 0, count = mParts.size(); i < count; i++) {
|
2011-02-10 02:47:43 +00:00
|
|
|
BodyPart bodyPart = mParts.get(i);
|
2009-03-04 03:32:22 +00:00
|
|
|
writer.write("--" + mBoundary + "\r\n");
|
|
|
|
writer.flush();
|
|
|
|
bodyPart.writeTo(out);
|
|
|
|
writer.write("\r\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.write("--" + mBoundary + "--\r\n");
|
|
|
|
writer.flush();
|
|
|
|
}
|
|
|
|
|
|
|
|
public InputStream getInputStream() throws MessagingException {
|
|
|
|
return null;
|
|
|
|
}
|
2010-05-17 22:44:36 +00:00
|
|
|
|
|
|
|
public String getSubTypeForTest() {
|
|
|
|
return mSubType;
|
|
|
|
}
|
2009-03-04 03:32:22 +00:00
|
|
|
}
|