Lets the user set the password itself or send them one via mail after registration?

I have to built an order process for an energy provider. The order process is very big and the user needs 10-15 minutes to complete it with all the data. The last point is to set a password to access the client area. But I am not sure what is the right way to do this.

We have 3 options to handle the problem:

  1. The user can set a password themselves at the end of the ordering process. The problem with this option is, that we also have a lot of clients with non-technical background. I think many people don’t know what they need this password for and I want to reduce the cognitive load.
  2. The user gets an e-mail after completing the process with the password in it. The advantage is, that they we can tell more things about the client area in the email to make it easier to understand what they need the client area for. And they can look in the email too see what the password is when they forgot it.
  3. Or we send an email after users complete the process with a one-time-link to set the password.

Note: The option to change the password is always given via the client area. Of course.

What is the best way to handle it in your mind?!