Create directory for your application:
mkdir -p mail cd mailCopied!
Create "mail-sender" application:
gg -k mail-sender
Copied!
Copy the following code to file "mail.golf":
begin-handler /mail public // Get URL parameter get-param action if-true action equal "show_form" // Display HTML form @<h2>Enter email and click Send to send it</h2> @Note: 'From' field must be the email address from the domain of your server.<br/><br/> @<form action="<<p-path "/mail">>" method="POST"> @ <input type="hidden" name="action" value="submit_form"> @ <label for="from_mail">From:</label><br> @ <input type="text" name="from_mail" value=""><br> @ <label for="to_mail">To:</label><br> @ <input type="text" name="to_mail" value=""><br><br> @ <label for="subject_mail">Subject:</label><br> @ <input type="text" name="subject_mail" value=""><br><br> @ <label for="message">Message:</label><br> @ <textarea name="message" rows="3" columns="50"></textarea> @ <br/><br/> @ <input type="submit" value="Send"> @</form> else-if action equal "submit_form" // Get data from HTML form get-param from_mail get-param to_mail get-param message get-param subject_mail // Construct email message write-string msg @From: <<p-out from_mail>> @To: <<p-out to_mail>> @Subject: <<p-out subject_mail>> @ <<p-out message>> end-write-string // Send email exec-program "/usr/sbin/sendmail" args "-i", "-t" input msg status st // Check status of email sending if-true st not-equal GG_OKAY @Could not send email! else-if @Email sent! end-if @<hr/> else-if @Unrecognized action!<hr/> end-if end-handlerCopied!
The example uses exec-program to invoke a MTA (Mail Transfer Agent), in this case postfix or sendmail, but you can use any other that you like!
Build your application server as a native executable:
gg -q
Copied!
Run the application server using Golf's application server manager, called mgrg:
mgrg mail-senderCopied!
You may or may not have MTA (Mail Transfer Agent) installed on your system. Install it anyway, for Ubuntu and Debian:
sudo apt install postfix sudo systemctl start postfixCopied!
and on RedHat and Fedora systems:
sudo dnf install postfix sudo systemctl start postfixCopied!
Now, since this application server will be accessed via web server, we'll need to setup a web server (aka "reverse proxy"). We'll use Apache, so follow the instructions to set up Apache, with <app path> being your application name, which is "mail-sender", and the "ProxyPass" directive in Step 3 will be:
ProxyPass "/mail-sender/" unix:///var/lib/gg/mail-sender/sock/sock|fcgi://localhost/mail-senderCopied!
Once you've restarted Apache web server, go to your browser and try it. In this case, everything is happening locally on your computer. If your server were running on the Internet, then you would use that server's name instead of "127.0.0.1", and email would be with an actual provider instead of a local user name. In this case local user name we're sending email to is "bear", but you'd put your own user name:
And once you click Submit: