以下是一个示例代码,演示如何在Android应用中发送带附件的购物卡订单电子邮件,而不使用意图:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class EmailAttachmentSender {
private static final String TAG = "EmailAttachmentSender";
private Context mContext;
private String mRecipientEmail;
private String mSubject;
private String mBody;
private String mAttachmentUrl;
public EmailAttachmentSender(Context context, String recipientEmail, String subject, String body, String attachmentUrl) {
mContext = context;
mRecipientEmail = recipientEmail;
mSubject = subject;
mBody = body;
mAttachmentUrl = attachmentUrl;
}
public void sendEmailWithAttachment() {
new DownloadTask().execute(mAttachmentUrl);
}
private class DownloadTask extends AsyncTask {
@Override
protected File doInBackground(String... urls) {
String attachmentUrl = urls[0];
try {
URL url = new URL(attachmentUrl);
URLConnection connection = url.openConnection();
connection.connect();
File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, "attachment.jpg");
InputStream inputStream = connection.getInputStream();
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
return file;
} catch (IOException e) {
Log.e(TAG, "Error downloading attachment", e);
}
return null;
}
@Override
protected void onPostExecute(File file) {
if (file != null) {
sendEmail(file);
} else {
// Handle error
}
}
}
private void sendEmail(File attachmentFile) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{mRecipientEmail});
intent.putExtra(Intent.EXTRA_SUBJECT, mSubject);
intent.putExtra(Intent.EXTRA_TEXT, mBody);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachmentFile));
mContext.startActivity(Intent.createChooser(intent, "Send email"));
}
}
要使用此示例代码,只需创建一个EmailAttachmentSender
对象并调用sendEmailWithAttachment
方法:
EmailAttachmentSender emailSender = new EmailAttachmentSender(context, "recipient@example.com", "Order Confirmation", "Thank you for your order!", "https://example.com/attachment.jpg");
emailSender.sendEmailWithAttachment();
请注意,此示例假设您有适当的权限来访问Internet和外部存储。您还可以根据需要修改文件下载和附件的类型和文件名。