smtp

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

smtp

The extended go src/net/smtp package

Example


package main

import (
  "fmt"
  
  "github.com/rwscode/smtp"
)

var (
  from     = "noreply@example.com"
  to       = []string{"ex1@example.com", "ex2@example.com"}
  host     = "smtp.example.com"
  port     = "587" // 25 for smtp, 587 for STARTTLS, 465 for TLS
  portTLS  = "465" // 25 for smtp, 587 for STARTTLS, 465 for TLS
  username = "mailuser"
  password = "mailpasswd"
  subject  = "Test message"
  message  = `This is a test message by Go rwscode/smtp`
)

func main() {
  err := smtp.Mail().Message(&smtp.Message{
    From:    &smtp.Email{Addr: from},
    To:      to,
    Subject: subject,
    Content: smtp.Content{ContentType: smtp.Plain, Body: message},
  }).PlainAuth(username, password, host).Send(host, port, false)
  if err != nil {
    fmt.Println("send mail error:", err)
    return
  }
  fmt.Println("send mail successful")
}

func mainTLS() {
  err := smtp.Mail().Message(&smtp.Message{
    From:    &smtp.Email{Addr: from},
    To:      to,
    Subject: subject,
    Content: smtp.Content{ContentType: smtp.Plain, Body: message},
  }).PlainAuth(username, password, host).Send(host, portTLS, true)
  if err != nil {
    fmt.Println("send mail error:", err)
    return
  }
  fmt.Println("send mail successful")
}

SMTP transport example

S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye

SMTP Extensions

  • 8BITMIME – 8 bit data transmission, RFC 6152
  • ATRN – Authenticated TURN for On-Demand Mail Relay, RFC 2645
  • AUTH – Authenticated SMTP, RFC 4954
  • CHUNKING – Chunking, RFC 4954
  • DSN – Delivery status notification, RFC 3461 (See Variable envelope return path)
  • ETRN – Extended version of remote message queue starting command TURN, RFC 1985
  • HELP – Supply helpful information, RFC 821
  • PIPELINING – Command pipelining, RFC 2920
  • SIZE – Message size declaration, RFC 1870
  • STARTTLS – Transport Layer Security, RFC 3207
  • SMTPUTF8 – Allow UTF-8 encoding in mailbox names and header fields, RFC 6531
  • UTF8SMTP – Allow UTF-8 encoding in mailbox names and header fields, RFC 5336 (deprecated[28])

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Mail

func Mail() *mail

Types

type Attachment

type Attachment struct {
	Filename    string
	ContentType string
	Data        []byte
}

type Content

type Content struct {
	ContentType ContentType
	Body        string
}

type ContentType

type ContentType string
const (
	Html  ContentType = "html"
	Plain ContentType = "plain"
)

type Email

type Email struct{ Name, Addr string }

type Message

type Message struct {
	From, ReplyTo *Email
	To, Cc, Bcc   []string
	Subject       string
	Content       Content
	Attachments   []Attachment
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL