Repository: certbot/certbot

Issue:
awkward language during email problems
On the dialog screen when there is an issue with a user's email, the text "Enter email address (used for urgent notices and lost key recovery)" is printed as the end of a paragraph with the next line not being a input area but another paragraph of text. It makes the screen a little awkward to read and unclear.

The text looks like this:

![email problem screen](https://cloud.githubusercontent.com/assets/167270/11384810/c43b7480-935e-11e5-965d-774671f81d5f.png)

awkward language during email problems
On the dialog screen when there is an issue with a user's email, the text "Enter email address (used for urgent notices and lost key recovery)" is printed as the end of a paragraph with the next line not being a input area but another paragraph of text. It makes the screen a little awkward to read and unclear.

The text looks like this:

![email problem screen](https://cloud.githubusercontent.com/assets/167270/11384810/c43b7480-935e-11e5-965d-774671f81d5f.png)



Discussion:
I would very much prefer to put the dialog box in between those two paragraphs, I just can't see a way to make dialog do that.

Perhaps we can reorganise so that the text is:

<tt>There seem to be problems with that address.  If you really want to skip entering an email, you can run the client with --register-unsafely-without-email, but make sure you back up your account key from /etc/letsencrypt/accounts</tt>

<tt>Enter your email address (used for urgent notices and lost key recovery):</tt>

<tt>Entry field</tt>

I think reorganizing the text is good. Maybe we should also consider including the error message from `boulder` to give the user more information about the problem.

We don't use ncurses anymore, so I think this is slightly less confusing now. It would still be nice to switch around the suggestion and the "Enter your email" prompt, which should be pretty easy to do in the `get_email` function of `certbot/display/ops.py`
To help us better see what issues are still affecting our users, this issue has been automatically marked as stale. If you still have this issue with an up-to-date version of Certbot and are interested in seeing it resolved, please add a comment letting us know. If there is no further activity, this issue will be automatically closed.

This is still a thing.
I would very much prefer to put the dialog box in between those two paragraphs, I just can't see a way to make dialog do that.

Perhaps we can reorganise so that the text is:

<tt>There seem to be problems with that address.  If you really want to skip entering an email, you can run the client with --register-unsafely-without-email, but make sure you back up your account key from /etc/letsencrypt/accounts</tt>

<tt>Enter your email address (used for urgent notices and lost key recovery):</tt>

<tt>Entry field</tt>

I think reorganizing the text is good. Maybe we should also consider including the error message from `boulder` to give the user more information about the problem.

We don't use ncurses anymore, so I think this is slightly less confusing now. It would still be nice to switch around the suggestion and the "Enter your email" prompt, which should be pretty easy to do in the `get_email` function of `certbot/display/ops.py`
To help us better see what issues are still affecting our users, this issue has been automatically marked as stale. If you still have this issue with an up-to-date version of Certbot and are interested in seeing it resolved, please add a comment letting us know. If there is no further activity, this issue will be automatically closed.

This is still a thing.

Resolving patch:
diff --git a/certbot/certbot/display/ops.py b/certbot/certbot/display/ops.py
--- a/certbot/certbot/display/ops.py
+++ b/certbot/certbot/display/ops.py
@@ -30,7 +30,7 @@ def get_email(invalid=False, optional=True):
 
     """
     invalid_prefix = "There seem to be problems with that address. "
-    msg = "Enter email address (used for urgent renewal and security notices)"
+    msg = "Enter email address (used for urgent renewal and security notices)\n"
     unsafe_suggestion = ("\n\nIf you really want to skip this, you can run "
                          "the client with --register-unsafely-without-email "
                          "but make sure you then backup your account key from "
@@ -64,7 +64,7 @@ def get_email(invalid=False, optional=True):
         if util.safe_email(email):
             return email
         if suggest_unsafe:
-            msg += unsafe_suggestion
+            msg = unsafe_suggestion + msg
             suggest_unsafe = False  # add this message at most once
 
         invalid = bool(email)


Test patch: