【发布时间】:2020-12-04 16:16:06
【问题描述】:
我在尝试在 Android 应用程序上使用 Retrofit2 通过 MailGun 发送电子邮件时遇到了实际问题。下面的代码没有给出任何错误,但也不起作用,而且我对 MailGun 或 Retrofit2 的工作方式知之甚少,甚至不知道从哪里开始对下面的代码进行故障排除,并且正在努力寻找在线帮助。
这是我的 MailHandler 类。
public class MailHandler {
private static final String TAG = "MailHandler";
public static final String ENDPOINT = "https://api.mailgun.net/v3/<domain redacted>/messages/";
public static final String ACCEPT_JSON_HEADER = "Accept: application/json";
public static final String BASIC = "Basic";
String apiKey = "api:key-<redacted>";
String fromText = "Boaty McBoatface<noreply@boatymcboatface.co.uk>";
private MailInterface api;
public interface MailInterface {
@Headers({ACCEPT_JSON_HEADER})
@FormUrlEncoded
@POST("/messages")
Call<Void> authUser (@Header("Authorization") String authorizationHeader,
@Field("from") String from,
@Field("to") String to,
@Field("subject") String subject,
@Field("text") String text);
}
public MailHandler() {
Retrofit retrofit = getAuthAdapter();
api = retrofit.create(MailInterface.class);
}
public Retrofit getAuthAdapter() {
return new Retrofit.Builder().baseUrl(ENDPOINT).addConverterFactory(GsonConverterFactory.create(new Gson())).build();
}
public void newEmail(String email) {
String authHeader = BASIC + " " + Base64.encodeToString(apiKey.getBytes(), Base64.NO_WRAP);
String subj = "Test Subject";
String body = "Test Email";
api.authUser(authHeader, fromText, email, subj, body);
}
}
【问题讨论】:
-
从您发布的代码中,您创建了一个 Retrofit 调用对象,但从不执行它。您的
api.authUser方法返回一个类型化的Call对象。在该对象上,您可以调用enqueue以异步执行网络请求。