我正在使用改装和mailgun发送电子邮件。我能够使用我的代码成功发送电子邮件。
现在我不知道如何在邮件中添加附件。
这是我的代码:
private SendMailApi sendMailApi;
public interface SendMailApi {
@Headers({ACCEPT_JSON_HEADER})
@FormUrlEncoded
@POST("/messages")
void authUser(
@Header("Authorization") String authorizationHeader,
@Field("from") String from,
@Field("to") String to,
@Field("subject") String subject,
@Field("text") String text,
Callback<MailGunResponse> cb
);
}
public void sendMail(String to, String subject, String msg, Callback<MailGunResponse> cb){
String from = "test <test@address.com>";
String clientIdAndSecret = "api" + ":" + "key-*******";
String authorizationHeader = BASIC + " " + Base64.encodeToString(clientIdAndSecret.getBytes(), Base64.NO_WRAP);
sendMailApi.authUser(authorizationHeader,from, to, subject, msg, cb);
}
public MailGun() {
RestAdapter restAdapter = getAuthAdapter();
sendMailApi = restAdapter.create(SendMailApi.class);
}
private RestAdapter getAuthAdapter(){
RestAdapter.LogLevel logLevel = RestAdapter.LogLevel.FULL;
if(DEBUG)logLevel = RestAdapter.LogLevel.FULL;
return new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.setConverter(new GsonConverter(new Gson()))
.setLogLevel(logLevel)
.build();
}
现在我不知道应该去哪里和哪个领域附件。 请给我一个例子,比如我有路径时附上图片。
请记住,我现在可以成功发送电子邮件,但没有附件。
非常感谢
答案 0 :(得分:0)
管理发送附件。人们在问题here和here中找到了解决方法。它看起来很丑陋,可能会破坏,但可以在retorfit 2.0.0上运行。
@Multipart
@POST("messages")
Observable<Void> send(
@Header("Authorization") String authorizationHeader,
@Part("from") RequestBody from,
@Part("to") RequestBody to,
@Part("subject") RequestBody subject,
@Part("text") RequestBody text,
@Part("recipient-variables") RequestBody variables,
@Part("attachment\"; filename=\"image.jpg") RequestBody attachment
);
request = mailgun.send(
MailGun.AUTH,
RequestBody.create(MediaType.parse("text/plain"), "from"),
RequestBody.create(MediaType.parse("text/plain"), "to"),
RequestBody.create(MediaType.parse("text/plain"), "subject"),
RequestBody.create(MediaType.parse("text/plain"), "message"),
RequestBody.create(MediaType.parse("text/plain"), "{}"),
RequestBody.create(MediaType.parse("image/*"), byteArray)
);
检查RequestBody.create()
是否有其他加载图片的方法,但所有方法都适用于此。我不知道text/plain
,但我无法在没有image/*
的情况下打开图片。