The Letter E with E

Python, 53 51 55 Bytes

lambda a,b,c,d,e:d.join("\n"*-~b).join([c+e*(a-2)+c]*3)

+4 Bytes thanks to @nimi

anonymous lambda function, to call it, write f= before it. Example:

>>> print f(4,1,"€","|","-")
€--€
|
€--€
|
€--€

alternative, 53 Bytes

lambda a,b,c,d,e:((c+e*a+c+"\n"+(d+"\n")*b)*3)[:-b*2]

old version with the special case of no input, 69 65 63 Bytes

yay to changing the requirements mid-challenge...

lambda a=1,b=1,(c,d,e)="+|-":d.join("\n"*-~b).join([c+e*a+c]*3)

05AB1E, 16 14 bytes

Í×s.ø©|`×`»D®»

Explanation

Í×                  # create a string of the correct nr of horizontal chars
  s.ø               # add the corner char on both sides
     ©              # save in register while keeping it on the stack
      |`            # push the remaining inputs to the top of the stack
        ×`          # push the correct nr of vertical chars on the stack
          »         # join on newline (joining the top vertical and horizontal sections)
           D        # duplicate this
            ®       # push the horizontal part again
             »      # join everything on newline

Try it online!

Saved 4 bytes thanks to Adnan.


C, 167 161 159 bytes

Yeah.

#define p putchar
i,j;g(a,c,e){p(c);for(i=2;i++<a;)p(e);p(c);p(10);}h(b,d){for(i=0;i++<b;){p(d);p(10);}}f(a,b,c,d,e){g(a,c,e);h(b,d);g(a,c,e);h(b,d);g(a,c,e);}

Try it on Ideone, with some test cases