diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogUnsubscribe.java b/app/src/main/java/eu/faircode/email/FragmentDialogUnsubscribe.java
index 13857a4b52..4956a322bb 100644
--- a/app/src/main/java/eu/faircode/email/FragmentDialogUnsubscribe.java
+++ b/app/src/main/java/eu/faircode/email/FragmentDialogUnsubscribe.java
@@ -108,12 +108,10 @@ public class FragmentDialogUnsubscribe extends FragmentDialogBase {
connection.getOutputStream().write(request.getBytes());
int status = connection.getResponseCode();
- if (status >= 400) {
- String error = "Error " + status + ": " + connection.getResponseMessage();
+ if (status >= 300) {
+ String error = status + ": " + connection.getResponseMessage();
Log.i("Unsubscribe error=" + error);
- InputStream stream = connection.getErrorStream();
- String detail = (stream == null || status == 404 ? null : Helper.readStream(stream));
- throw new IOException(error + " " + detail);
+ throw new IllegalArgumentException(error);
} else
Log.i("Unsubscribe status=" + status);
@@ -132,7 +130,12 @@ public class FragmentDialogUnsubscribe extends FragmentDialogBase {
@Override
protected void onException(Bundle args, Throwable ex) {
dialog.dismiss();
- Log.unexpectedError(getParentFragmentManager(), ex);
+ if (ex instanceof IllegalArgumentException)
+ ToastEx.makeText(context,
+ context.getString(R.string.title_unsubscribe_error, ex.getMessage()),
+ Toast.LENGTH_LONG).show();
+ else
+ Log.unexpectedError(getParentFragmentManager(), ex);
}
}.execute(FragmentDialogUnsubscribe.this, args, "unsubscribe");
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a719a59072..71c35ef824 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1639,6 +1639,7 @@
Keywords
Labels (Gmail only)
Unsubscribe
+ The unsubscribe link in the message does not work. Error %1$s
Create rule
Not spam
Edit subject …