<bigwig> service: email


service {
  format Word = plus ( union(range('A', 'z'), range('0', '9')) );
  
  format Email = concat(Word, "@", Word, star(concat(".", Word)));
  
  html EnterMail = <html>
    <h1>Send an email</h1>
    <hr>
    <pre>
    To:      <input type=text name="To">
    From:    <input type=text name="From">
    Subject: <input type=text name="Subject">
    <textarea name="Content" rows=10 cols=60></textarea>
    </pre>
    <continue type=button value=true>Send</continue>
    <continue type=button value=false ignoreformats>Cancel</continue>
    <format field="To" help="Please enter valid email address" warning="Invalid email address"><bigwig-regexp idref="Email"/></format>
    <format field="From" help="Please enter valid email address" warning="Invalid email address"><bigwig-regexp idref="Email"/></format>
  </html>;
  void email(string To, string From, string Subject, string Content) {
    sendmail(relation { tuple { name="To", value=To }, 
        tuple { name="From", value=From }, 
        tuple { name="Subject", value=Subject } }, Content);
  }
  
  session SendEmail() {
    bool send;
    string To, From, Subject, Content;
    
    show EnterMail receive [To, From, Subject, Content, send=continue];
    if (send) {
      email(To, From, Subject, Content);
      exit <html><h1>Mail sent!</h1></html>;
    }
    else {
      exit <html><h1>Mail not sent</h1></html>;
    }
  }
}