Golang发送邮件

简介: 简述 Go 提供了一个 smtp(Simple Mail Transfer Protocol - 简单邮件传输协议)库作为其网络包的一部分,“net/smtp”公开了一些可立即使用的有用功能。 Gomail - 一个比较成熟的第三方包,提供了一个快速、简单的解决方案,可以轻松地发送电子邮件。 简述 Gomail 特性 使用 常用邮箱 开启服务 Go
+关注继续查看

简述

Go 提供了一个 smtp(Simple Mail Transfer Protocol - 简单邮件传输协议)库作为其网络包的一部分,“net/smtp”公开了一些可立即使用的有用功能。

Gomail - 一个比较成熟的第三方包,提供了一个快速、简单的解决方案,可以轻松地发送电子邮件。

Gomail

Gomail 是一个简单、高效的发送电子邮件包,它经过良好的测试和记录。

Gomail 只能使用 SMTP 服务器发送电子邮件,但是 API 比较灵活的,很容易实现其他方法使用本地 Postfix、API 等发送电子邮件。

项目地址:https://github.com/go-gomail/gomail

文档:https://godoc.org/gopkg.in/gomail.v2

示例:https://godoc.org/gopkg.in/gomail.v2#example-package

特性

Gomail 支持:

  • 附件
  • 嵌入图像
  • HTML 和文本模板
  • 特殊字符的自动编码
  • SSL 和 TLS
  • 使用相同的 SMTP 连接发送多封电子邮件

使用

下载 Gomail,解压缩至 $GOPATH\src(例如:E:\Works\Golang\src),新建并编写 sendMail.go:

package main

import (
    "gomail"
)

func main() {
    m := gomail.NewMessage()
    m.SetAddressHeader("From", "550755606@qq.com", "一去、二三里")  // 发件人
    m.SetHeader("To",  // 收件人
        m.FormatAddress("********@163.com", "乔峰"),
        m.FormatAddress("********@qq.com", "郭靖"),
    )
    m.SetHeader("Subject", "Gomail")  // 主题
    m.SetBody("text/html", "Hello <a href = \"http://blog.csdn.net/liang19890820\">一去丶二三里</a>")  // 正文

    d := gomail.NewPlainDialer("smtp.qq.com", 465, "550755606@qq.com", "*********")  // 发送邮件服务器、端口、发件人账号、发件人密码
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}

运行:go run sendMail.go,发送成功之后,就能收到邮件了。

这里写图片描述

常用邮箱

列举一些常用的邮箱,可以用来测试:

  • QQ 邮箱
    POP3 服务器地址:qq.com(端口:995)
    SMTP 服务器地址:smtp.qq.com(端口:465/587)

  • 163 邮箱:
    POP3 服务器地址:pop.163.com(端口:110)
    SMTP 服务器地址:smtp.163.com(端口:25)

  • 126 邮箱:
    POP3 服务器地址:pop.126.com(端口:110)
    SMTP 服务器地址:smtp.126.com(端口:25)

开启服务

出于邮箱安全的考虑,很多邮箱缺省是关闭 POP3/SMTP 服务的,需要登录邮箱设置后开启。

以 QQ 邮箱为例,进入邮箱“设置”,在“帐户”项里就可找到“POP3/SMTP服务”的设置项,进行开启。

这里写图片描述

温馨提示:登录第三方客户端时,密码框请输入“授权码”进行验证。

也就是说,在使用 QQ 邮箱发送邮件的时候,需要使用授权码,而不是 QQ 密码!

目录
相关文章
|
1天前
|
Go 索引
Go语言中的数组、切片和映射解析
Go语言中的数组、切片和映射解析
|
4天前
|
设计模式 Go
适配器模式在Go语言中的应用和实现
适配器模式在Go语言中的应用和实现
18 0
适配器模式在Go语言中的应用和实现
|
5天前
|
存储 编译器 Go
Go 语言内置类型全解析:从布尔到字符串的全维度探究
Go 语言内置类型全解析:从布尔到字符串的全维度探究
18 0
|
8天前
|
Java Go 开发工具
Go 语言内存管理详解
Go 语言内存管理详解
Go 语言内存管理详解
|
8天前
|
机器学习/深度学习 安全 测试技术
Go语言进阶-工程进阶
Go语言进阶-工程进阶
Go语言进阶-工程进阶
|
8天前
|
网络协议 Go
GO语言学习 - 创建TCP监听
GO语言学习 - 创建TCP监听
92 0
|
8天前
|
Go
GO语言学习-读取本地文本文件
GO语言学习-读取本地文本文件
78 0
|
18天前
|
并行计算 安全 Go
Golang并发编程技术:解锁Go语言的并行潜力
本文将介绍Golang中的一些关键特性和技术,以帮助您更好地理解和利用Go语言的并发编程潜力。
24 0
|
19天前
|
Java 编译器 Go
为什么你应该学习Go语言?
为什么你应该学习Go语言?
27 0
|
22天前
|
前端开发 安全 Go
在Mac OS X上运行Go语言的GUI程序
在Mac OS X上运行Go语言的GUI程序
39 3