Coder Social home page Coder Social logo

Comments (2)

emersion avatar emersion commented on July 28, 2024 1

Sorry, but I don't have time for this.

from go-smtp.

olljanat avatar olljanat commented on July 28, 2024

In case someone is still interested. This is version which I got from ChatGPT:

package main

import (
	"io"
	"log"

	smtp "github.com/emersion/go-smtp"
)

// Backend defines your backend to handle SMTP sessions.
type Backend struct{}

// NewSession is called after client greeting (EHLO, HELO).
func (bkd *Backend) NewSession(c *smtp.Conn) (smtp.Session, error) {
	session := &Session{
		from: "",
		to:   []string{},
	}
	return session, nil
}

// Session is used to store state of an SMTP session through the authentication and message sending process.
type Session struct {
	from string
	to   []string
}

// AuthPlain allows all credentials.
func (s *Session) AuthPlain(username, password string) error {
	return nil
}

func (s *Session) Mail(from string, opts *smtp.MailOptions) error {
	log.Println("Mail from:", from)
	s.from = from
	return nil
}

func (s *Session) Rcpt(to string, opts *smtp.RcptOptions) error {
	log.Println("Rcpt to:", to)
	s.to = append(s.to, to)
	return nil
}

func (s *Session) Data(r io.Reader) error {
	log.Println("Starting to read email data...")
	// Example of sending the email, replace with actual sending logic
	err := smtp.SendMail("smtp.example.com:25", nil, s.from, s.to, r)
	if err != nil {
		log.Printf("Failed to send email: %v\n", err)
		return err
	}

	log.Println("Email sent successfully.")
	return nil
}

func (s *Session) Reset() {
	log.Println("Resetting session")
}

func (s *Session) Logout() error {
	log.Println("Logging out")
	return nil
}

func main() {
	be := &Backend{}

	s := smtp.NewServer(be)

	s.Addr = ":1025"
	s.Domain = "localhost"
	s.AllowInsecureAuth = true

	log.Println("Starting SMTP server on port 1025")
	if err := s.ListenAndServe(); err != nil {
		log.Fatal(err)
	}
}

and it should do the trick.

from go-smtp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.