Sending Email GUI Client- Fyne Golang Coding Tutorial

Sending Email GUI Client- Fyne Golang Coding Tutorial

 

You need to install the following package:

go get gopkg.in/mail.v2

Let create UI. We need the following widgets

 

Two labels widgets are required

  • App Heading/Title
  • Showing Error & Success Message

 

Four Entry widgets are required

  • Sender email
  • Receiver email
  • Email Subject
  • Message/Email body

Button for sending the email.

  • create a button widget and label it Send email

Sending Email GUI Client – Part #1

Sending Email GUI Client – Part # 2

 

Source Code

package main
import (
    "fmt"
    "image/color"
    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/canvas"
    "fyne.io/fyne/v2/container"
    "fyne.io/fyne/v2/widget"
    gomail "gopkg.in/mail.v2"
)
func main() {
    a := app.New()
    w := a.NewWindow("Email Sender Client")
    // lets create UI for all fields
    title := canvas.NewText("Email Sender Client..", color.Black)
    title.TextSize = 22 // font size is increased
    title.Alignment = fyne.TextAlignCenter
    message_status := widget.NewLabel("Enter / fill all fields")
    sender := widget.NewEntry()
    sender.SetPlaceHolder("Enter Sender Email")
    receiver := widget.NewEntry()
    receiver.SetPlaceHolder("Enter Receiver Email")
    subject := widget.NewEntry()
    subject.SetPlaceHolder("Enter Subject")
    message_body := widget.NewMultiLineEntry()
    message_body.SetPlaceHolder("Enter Message...")
    // create our first button
    send_btn := widget.NewButton("Send Email", func() {
        message := gomail.NewMessage()
        // message from/ sender email
        // remove all static values
        message.SetHeader("From", sender.Text)
        message.SetHeader("To", receiver.Text)
        message.SetHeader("Subject", subject.Text)
        message.SetBody("text/plain", message_body.Text)
        // put/type smtp client email host(server),port, username,password
        // you can use gmail and any other server.
        dailer := gomail.NewDialer("smtp-relay.sendinblue.com", 587, "[email protected]", "wvVgD2Ut47TjkiOX")
        err := dailer.DialAndSend(message)
        if err != nil {
            fmt.Println(err)
            // message/ error in message status
            message_status.Text = err.Error()
            message_status.Refresh()
        } else {
            fmt.Println("Mail Sent successfully...")
            // message/ error in message status
            message_status.Text = "Mail Sent successfully..."
            message_status.Refresh()
        }
    })
    w.Resize(fyne.NewSize(400, 400))
    // send all entries in container
    w.SetContent(container.NewVBox(
        title, // title should be centered
        sender,
        receiver,
        subject,
        message_body,
        send_btn,
        message_status,
    ))
    w.ShowAndRun()
}

Tony BB
 

TonyBB is a Coach , marketer, hypnotist and a founder of RSKVF Production who specializes in providing simple, affordable, and easy to use solutions for Life.

Click Here to Leave a Comment Below 0 comments

Leave a Reply: