[golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)
1 前言
定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。

gomail包:
go get gopkg.in/gomail.v2
更多功能可以参考 https://github.com/go-gomail/gomail
2 代码
/**
* @Author: FB
* @Description:
* @File: main.go
* @Version: 1.0.0
* @Date: 2019/9/7 14:01
*/
package main import (
"gopkg.in/gomail.v2"
"strconv"
"log"
"fmt"
) func SendMail(mailTo []string, subject string, body string) error {
//定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码 //mailConn := map[string]string{
// "user": "xxx@163.com",
// "pass": "your password",
// "host": "smtp.163.com",
// "port": "465",
//} mailConn := map[string]string{
"user": "xxx@sample.cn",
"pass": "r4r3St*****7a7Uk",
"host": "smtp.exmail.qq.com",
"port": "465",
} port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int m := gomail.NewMessage() m.SetHeader("From", m.FormatAddress(mailConn["user"], "XX官方")) //这种方式可以添加别名,即“XX官方”
//说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是qq企业邮箱,以下方法用中文别名,会报错,需要用上面此方法转码
//m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //这种方式可以添加别名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
//m.SetHeader("From", mailConn["user"])
m.SetHeader("To", mailTo...) //发送给多个用户
m.SetHeader("Subject", subject) //设置邮件主题
m.SetBody("text/html", body) //设置邮件正文 d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"]) err := d.DialAndSend(m)
return err }
func main() {
//定义收件人
mailTo := []string{
"abc@sample.com",
}
//邮件主题为"Hello"
subject := "Hello by golang gomail from exmail.qq.com"
// 邮件正文
body := "Hello,by gomail sent" err := SendMail(mailTo, subject, body)
if err != nil {
log.Println(err)
fmt.Println("send fail")
return
} fmt.Println("send successfully") }
3 参考
[golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)的更多相关文章
- mutt+msmtp实现在shell环境中发送电子邮件
作者:邓聪聪 为了自动化接收服务端的文件备份信息,利用mutt+msmtp在shell环境中发送电子邮件,轻松高效的完成运维工作. 下载msmtp wget http://downloads.sour ...
- 转: "SMTP 服务器无法识别在 Mac 2011 Outlook 中发送电子邮件时错误。错误 17092"
在 Mac 2011 Outlook 中发送电子邮件时,您可能会收到下面的错误消息: 无法发送邮件.SMTP 服务器无法识别任何 Outlook 所支持的身份验证方法.请尝试更改帐户设置中的 SMTP ...
- JAVA中发送电子邮件的方法
JAVA中发送邮件的方法不复杂,使用sun的JavaMail的架包就可以实现. 一.下载JavaMail的架包,并导入项目中,如下: 二.附上代码例子,如下: 1.在main函数中对各项参数进行赋值 ...
- 在ASP.NET中发送电子邮件的实例教程
首先.导入命名空间: 代码如下 复制代码 using System.Net.Mail; 定义发送电子邮件的方法[网上很多不同的,可以对比着看一下,WinForm的也适用]: 代码如下 复制代码 /// ...
- 【转载】在Angular 2/Typescript中声明全局变量的最佳方式是什么?
问题详细描述 我想在Typescript语言中的Angular 2中声明一些全局可见的变量.最佳的实践方法是? 推荐的实现方法 这是最简单的解决方案,无需使用Service或Observer: 将全局 ...
- 教程 - 深度探讨在 Vue3 中引入 CesiumJS 的最佳方式
目录 1. 你应该先知道的基础知识 1.1. CesiumJS 的库构成 1.2. 选择 Vite3 和 pnpm 的理由 1.3. 使用 External 模式引入静态库 - 不打包静态库 1.4. ...
- PHP实例开发(2)PHP通过mail()或Socket发邮件
PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者 ...
- python发邮件遇到的端口号问题
在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...
- sql server如何把查询结果发邮件出去
原本:https://zhidao.baidu.com/question/1819725575342685788.html --1.启用Database Mail扩展存储过程 sp_configure ...
随机推荐
- Honk's pool[STL multiset]
目录 题目地址 题干 代码和解释 题目地址 Honk's pool(The Preliminary Contest for ICPC Asia Shenyang 2019 ) 题干 代码和解释 本题使 ...
- [技术博客]采用Qthread实现多线程连接等待
采用Qthread实现多线程连接等待 本组的安卓自动化测试软件中,在测试开始前需要进行连接设备的操作,如下图左侧的按钮 后端MonkeyRunner相关操作的程序中提供了connect() ...
- 变异的功能 | variants function | coding | non-coding
variant主要分为两类: coding noncoding 这两大类的分析方法截然不同,coding主要直接影响了mRNA和蛋白:而noncoding,主要是影响调控. coding编码区如何分析 ...
- gradle/gradle plugin/Android studio关系
gradle - 构建工具,存储于Users/stono/.gradle/wrapper/dists Adroid Studio- IDE Gradle plugin - 在AS中使用Gradle的插 ...
- 解析prototxt文件的python库 prototxt-parser(使用parsy自定义文件格式解析)
解析prototxt文件的python库 prototxt-parser https://github.com/yogin16/prototxt_parser https://test.pypi.or ...
- 各种字符串Hash函数(转)
/// @brief BKDR Hash Function /// @detail 本 算法由于在Brian Kernighan与Dennis Ritchie的<The C Programmin ...
- java实现的一个【快速排序 】算法【原创】
import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class Test { public stati ...
- easyui的datagrid的使用记录
datagrid是在 table的基础上变化而来的, 而不是在div的基础上来的. 从div来变成 datagrid,样式的设置还是是比较麻烦的. dg=datagrid 的标题 来源于 column ...
- RAC升级后,一个节点无法连接数据库,报ORA-12537: TNS:connection closed
RAC从11.2.0.3升级到11.2.0.4后,一个节点的Public IP.VIP无法连接数据库 SQL> CONN SYS/oracle@192.168.122.101:1521/pplu ...
- PMP 第5章错题总结
1.工作分解结构是项目团队与相关方之间沟通的有效工具之一2.控制账户是工作分解结构某个层次上的要素,以便与工作包一一对应3.项目范围说明书包括产品范围.产品验收标准.项目可交付成果.项目除外责任,以及 ...