【问题标题】:Android Retrofit sending email with attachment using mailgunAndroid Retrofit 使用 mailgun 发送带附件的电子邮件
【发布时间】:2016-03-25 21:05:39
【问题描述】:

我正在使用改造和 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();
}

现在我不知道附件应该去哪里,在什么地方。 请给我一个例子,比如当我有它的路径时附加一个图像。

请记住,我现在可以在没有附件的情况下成功发送电子邮件。

非常感谢

【问题讨论】:

  • 没试过这个mysleft,但根据文档,附件使用多部分发送。我不知道这是否适用于改造,但有一个问题here

标签: android email retrofit mailgun


【解决方案1】:

已成功发送附件。人们在问题herehere 中找到了方法。它看起来很丑,以后可能会损坏,但适用于 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/*,我无法打开图像。

【讨论】:

  • 嗨,我也需要这样做,使用带有附件的 mailgun。你能帮忙发布整个代码吗?
  • 无法真正添加任何内容。请记住,这篇文章已经 3 年了,从那以后我没有做过任何邮筒工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2017-10-12
  • 2015-01-13
相关资源
最近更新 更多