okhttp3 MultipartBody 邮件
时间: 2025-01-06 10:36:53 浏览: 5
### 使用 OkHttp3 的 `MultipartBody` 发送邮件
为了通过 OkHttp3 发送带有附件的电子邮件,可以利用 `MultipartBody` 来构建复杂的 HTTP 请求体。下面是一个详细的例子展示如何实现这一功能。
#### 构建 Multipart 请求
```java
import okhttp3.*;
public class EmailSender {
private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("text/plain");
public void sendEmailWithAttachment(String email, String subject, String bodyText, File attachment) throws IOException {
OkHttpClient client = new OkHttpClient();
// 创建 multipart/form-data 类型的请求体
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("to", email)
.addFormDataPart("subject", subject)
.addFormDataPart("body", bodyText)
.addFormDataPart(
"attachment",
attachment.getName(),
RequestBody.create(attachment, MediaType.parse("application/octet-stream"))
)
.build();
// 设置目标 URL 和 POST 方法
Request request = new Request.Builder()
.url("https://api.example-email-service.com/send") // 替换成实际的服务地址
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new RuntimeException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
}
```
此代码片段展示了如何创建一个多部分表单数据类型的请求体,并向指定的目标服务器提交包含收件人邮箱、主题、正文以及附件的信息[^1]。
需要注意的是,在真实的应用场景中,通常会有一个专门提供发送邮件服务的 API 接口(如上例中的 `"https://api.example-email-service.com/send"`),开发者需要根据实际情况调整该接口的具体路径和其他参数配置[^2]。
另外,当涉及到敏感信息比如用户的登录凭证或者其他认证机制时,应该采取适当的安全措施确保这些信息不会被泄露给第三方[^3]。
阅读全文