Go发送电子邮件

使用 golang 发送电子邮件的两种方式 目录使用 golang 发送电子邮件的两种方式1、使用 golang 官方自带的 net/smtp 包2、使用第三方库2.1 安装第三方库2.2 参考代码html 模板文件参考 使用 golang 发送电子邮件的两种方式 1、使用 golang 官方自带的 net/smtp 包 // 使用go自带的net/smtp包发送邮件 func SendToEmail(fromUser string, to... 阅读详情

目录

前言

获取授权码

使用Go原生smtp包发送邮件

所需导入包

身份、发送者和密码

stmp域名和端口

接收者切片

发送者名称

标题和正文

生成授权

指定上下文类型

拼接发送消息和url

发送邮件

发送邮件实测

使用第三方包----gomail

gomail简单介绍

获取gomail

生成gomail message

设置发件人信息

设置收件人信息

设置抄送者信息

设置密送者信息

设置邮件主题

书写正文内容

添加附件

设置拨号器

🚀发送邮件~


前言

Go原生包net/smtp可以实现基本的发送邮件功能。Go的第三方包gomail可以实现更多的发送功能。下面来一一介绍。

获取授权码

部分邮箱(例如QQ邮箱)发送邮件时,使用的不是密码,而是授权码。授权码的获取方式请参考:获取QQ邮箱的授权码。

使用Go原生smtp包发送邮件

所需导入包

需要使用 net/smtp 包

import (
    "net/smtp"
)

身份、发送者和密码

identity := ""
sender := "tcattime@qq.com"
pwd := "lzffxekpzhuazsfeagb2"

⚠️发送者sender必须是合法有效的邮箱。有些邮箱发送时需要的是授权码,而非密码。因此需要将pwd的值替换为授权码。

stmp域名和端口

host :="smtp.qq.com"
port := "25"

使用QQ邮箱作为发送者邮箱时,域名和端口如上配置。

接收者切片

可以一次性发送给多个用户:

sendTo:=[]string{"tester@qq.com", "cat@huawei.com"}

发送者名称

senderName := "TCatTime"

定义邮件发送者的名字。

标题和正文

title := "have a nice day"
body := "test8.0"

定义邮件的标题和正文内容。

生成授权

调用smtp包中的PlainAuth函数,生成授权。

auth := smtp.PlainAuth(identity, sender, pwd, host)

指定上下文类型

content_type := "Content-Type: text/html; charset=UTF-8"

拼接发送消息和url

msg := []byte("To: " + strings.Join(sendTo, ",",) + "\nFrom: " + senderName +
		"<" + sender + ">\nSubject: " + title + "\n" + content_type + "\n" + body + "\n")

url := host + ":" + port

发送邮件

err := smtp.SendMail(url, auth, sender, sendTo, msg)
if err != nil {
	fmt.Printf("\n\nsend mail error: %v", err)
	return
}
fmt.Println("\n\nsend mail success!")

发送邮件实测

使用第三方包----gomail

gomail简单介绍

gomail框架对go原生的smtp包做了一层封装,使用更直观、简便。且gomail可以更方便的发送带有附件的邮件、添加抄送者等。

获取gomail

1、使用go-get获取

github.com/go-gomail/gomail

2、使用go-mod获取

进入项目目录下

go mod tidy

生成gomail message

m := gomail.NewMessage()

设置发件人信息

m.SetAddressHeader("From", "a@qq.com", "发件人")

设置收件人信息

m.SetHeader("To",
	m.FormatAddress("b@qq.com", "收件人"))

设置抄送者信息

m.SetHeader("Cc",
	m.FormatAddress("xxxx@foxmail.com", "收件人1"),
	m.FormatAddress("xxxx@foxmail.com", "收件人2"))

设置密送者信息

m.SetHeader("Bcc",
	m.FormatAddress("xxxx@gmail.com", "收件人1"),
	m.FormatAddress("xxxx@gmail.com", "收件人2"))

设置邮件主题

m.SetHeader("Subject", "go-mail测试")

SetHeader方法的第一个参数表示邮件标题(Subject),第二个参数表示邮件主题(go-mail测试)。

书写正文内容

m.SetBody("Content-Type: text/html; charset=UTF-8", "go-mail")

SetBody()方法的第一个参数表示正文内容的类型和默认的编码格式。第二个参数是正文内容。

添加附件

m.Attach("/Users/root/Desktop/demo.docx")

使用Attach()方法添加一个附件到邮件中。附件的路径为服务器端的绝对路径。

设置拨号器

发送邮件的最后一项准备工作是设置拨号器。使用NewDialer()函数生成一个拨号器。将邮件服务器、端口、发送者邮箱、密码(或授权码)依次传入NewDialer()函数中。以QQ邮箱为例:

d := gomail.NewDialer("smtp.qq.com", 25, "demo@qq.com", "lzfxkkpzuasfeagz")

🚀发送邮件~

最后一步,发送!

err := d.DialAndSend(m)
if err != nil {
    fmt.Println("send mail error:", err.Error())
    return
}

fmt.Println("Send mail finished!")

从Java到Go:使用Go语言实现电子邮件发送服务 电子邮件是现代通信的重要组成部分,用于各种场景,如通知、广告、报警等。在本文中,我们将首先了解SMTP协议的基本概念,然后逐步实现一个简单的电子邮件发送服务。简单邮件传输协议(SMTP, Simple Mail Transfer Protocol)是一种互联网标准协议,用于电子邮件的传输。SMTP服务器用于发送和接收邮件,通常通过TCP端口25进行通信。在本文中,我们将使用Go语言的net/smtp包来实现一个简单的电子邮件发送服务。 阅读详情

相关推荐

Java到Go过渡:用Go语言构建电子邮件发送服务

通过本文,我们学习了如何使用Go语言构建一个简单的电子邮件发送服务,并探讨了从Java到Go的过渡,包括基本语法差异、面向对象编程与接口等概念。这些知识点将帮助您更顺利地从Java过渡到Go,并充分利用Go的简洁语法、高性能和并发支持。在实际项目中,您可能需要考虑将电子邮件发送功能封装到一个独立的Go包中,并提供更多的配置选项和错误处理。此外,您还可以考虑使用第三方电子邮件发送服务,如SendGrid或Mailgun,以更好地处理电子邮件发送、跟踪和分析等功能。

斌擎科技 277

Golang发送邮件 — gomail

Golang使用gomail发送邮件

cz911005的博客 6924

Go语言中的简单邮件发送实践:goemail库使用指南

goemail是Go语言的一个库,它提供了简单易用的API来发送邮件。这个库支持SMTP协议,可以轻松集成到任何Go应用程序中,无论是Web应用还是命令行工具。简单邮件传输协议(SMTP)是用于电子邮件传输的标准协议。它定义了邮件服务器之间以及邮件客户端和服务器之间的交互规则。SMTP工作在TCP/IP协议之上,通常在端口25、465(SSL)或587(TLS)上运行。SMTP服务器处理邮件的发送和中继,而接收邮件则通常由其他协议(如IMAP或POP)负责。

weixin_42577243的博客 2683

50.Go实现邮件发送

程序中时常有发送通知的需求。有异常情况了需要通知管理员和负责人,用户下单后可能需要通知订单信息,电商平台、中国移动和联通都有每月账单,这些都可以通过飞书、微信、钉钉、短信或者邮件来推送。之前我们已经介绍过如果发送飞书消息7. 飞书机器人发送交互式信息,本次我们介绍下如何发送邮件,其实我们平时收到的垃圾邮件大都也是通过这种方式发送的。那么如何在Go语言发送邮件?本文我们介绍一下email库的使用。

YouMing_Li的博客 3180

GoSendMail:简单的smtp sendmail工具

发送邮件 GoSendMail 是简单的 smtp 发件人。 仅编码 utf8。 使用示例: // smtpServer info : IP Address, port, userName, Password smtpServer := gosendmail.NewSmtpSever("xxx.xxx.xxx.xxx", 25, "yyy", "zzz") // sendmail info : from address, to address, cc address, subject, body sendMail := gosendmail.NewSendMail("abc@xxx.xxx", []string{"abc@xxx.xxx"}, []string{"xyz@gxxx.xxx"}, "UTF8のSubject", "UTF8の本文") // send smtp mai

STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析

本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。

weixin_29184371的博客 234

Golang发送邮件

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

weixin_33995481的博客 478

单片机课程设计——交通灯

单片机课程设计——交通灯一、课程设计主要内容1.1 题目1.2摘要1.3关键词二、设计要求三、设计方案四、参考电路设计4.1.1数码管的设计4.1.2对应程序4.2.1独立按键的设计4.2.2对应程序4.2.3 使用逻辑4.3.1LED模块的设置4.3.2 LED实物图4.3.3 LED显示程序五、调试要点5.1 单片机最小系统5.2 数码管模块5.3 LED模块5.4 独立按键六、总结七、成品图完整程序 一、课程设计主要内容 1.1 题目 交通灯设计 1.2摘要 近年来,随着我国国民经济的快速发展,我国机

PKPROTEUS的博客 3万+

Go使用gomail发送邮件详解,及使用smtp、email发送邮件

package main import ( "crypto/tls" "fmt" "gopkg.in/gomail.v2" ) func main() { test1() } func test1() { message := ` <p> Hello %s,</p> <p style="text-indent:2em">test test test test test test test test test test test test.

Lawson的博客 4万+

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 518

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用

数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。

weixin_38594676的博客 1436

4、golang 发送电子邮件

> 在golang中发送电子邮件有两种方式: > > * 使用`net/smtp` > * 使用`gopkg.in/gomail.v2`

qq_41971768的博客 5771

告别混乱!用Cadence Capture CIS高效管理你的原理图库:以单逻辑器件K9F2G08U0M为例

本文以单逻辑器件K9F2G08U0M为例,详细介绍了如何使用Cadence Capture CIS高效管理原理图库。通过三级分类体系、工程化命名规范和智能检索技术,帮助工程师实现从混乱到有序的转变,提升团队协作效率和设计准确性。

aizhi0169的博客 400

电子邮件发送接收原理(附 go 语言实现发送邮件)

本文阐述了电子邮件发送接收原理。大体流程:用户A-> 邮箱服务器 (-> 其他邮箱服务器) -> 用户B。最后介绍了下使用golang来发送邮件,配置好服务器后还是很方便的。

DisMisPres的博客 1681

手把手教你学Simulink——基础储能管理场景实例:基于Simulink的压缩空气储能(CAES)系统简化模型仿真

本文介绍了基于Simulink的压缩空气储能(CAES)系统简化模型仿真方法。CAES作为大规模长时储能方案,相比锂电池具有成本低、寿命长等优势。文章详细讲解了AA-CAES系统组成、热力学建模理论,以及Simulink实现流程,包括储气室、压缩机、膨胀机等核心模块的建模方法。通过8小时充电(50MW)和6小时放电(40MW)的仿真,验证了系统可实现60%往返效率。该模型为理解CAES系统运行机制提供了实用工具,并指出热管理、储气室特性等工程实践要点,为新型电力系统储能规划提供了仿真基础。

MHD0815的博客 171

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

使用golang发送电子邮件

电子邮件在日常工作中有很大用途,凡项目或任务,有邮件来往可避免扯皮背锅。 而在一些自动化的应用场合,也使用得广泛,特别是系统监控方面,如果在资源使用达到警戒线之前自动发邮件通知运维人员,能消除隐藏于前期,而不至于临时临急去做善后方案。 对于多人协合(不管是不是异地)场合,邮件也有用武之地,当有代码或文档更新时,自动发邮件通知项目成员或领导,让各方人员知晓并及时更新(是否更新,取决于人,而非工具)。

李迟的专栏 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

在Go中使用Goroutines和Channels发送电子邮件

在本文中,我们将探讨如何使用Goroutines和Channels在Go中发送电子邮件。通过本教程的最后,您将对如何在Go应用程序中实现此功能有深入的了解。

csjds的专栏 2269

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)

1 前言 定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。 gomail包: go get gopkg.in/gomail.v2 更多功能可以参考https://github.com/go-gomail/gomail   2 代码 /** * @Author: FB * @Description: ...

weixin_30470643的博客 2009

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

终极指南:如何用 Go Simple Mail 轻松发送电子邮件 [特殊字符]

想要在 Go 项目中快速、简单地发送邮件吗?Go Simple Mail 就是你的完美选择!这个强大的 Golang 包让邮件发送变得前所未有的轻松。无论你是新手还是经验丰富的开发者,都能在几分钟内掌握这个工具的使用方法。 ## 🌟 为什么选择 Go Simple Mail? Go Simple Mail 是一个专为 Go 语言设计的 SMTP 邮件发送库,它支持: - **持久连接**:

gitblog_00274的博客 527

golang gomail vue 发送电子邮件

golang gomail vue 发送电子邮件 在vue中引入了富文本编辑器打造发送邮件页面,邮件内容为html格式 gomail的安装 安装:go get gopkg.in/gomail.v2 gomail的使用 package email import ( "fmt" "gopkg.in/gomail.v2" "strconv" ) const emailAddress = "啥也不是@13.com" const emailPassword = "就啥也不是" const em

look look 986

【go语言发送电子邮件】go语言版发送电子邮件

一、实现功能 用go语言发送一封邮件二、实现源代码package main import ( "net/smtp" "fmt" "strings" )/* * user : example@example.com login smtp server user * password: xxxxx login smtp server password * host:

赖德发的博客 5057

GO(golang)语言使用SMTP发送电子邮件,简单和复杂带附件cc,bcc

转https://studygolang.com/articles/2098 核心代码:smtp.SendMail(host, auth, user, send_to, msg),auth := smtp.PlainAuth("", user, password, hp[0]) 可行方案:使用企业邮箱的SMTP发送邮件,host :="smtp.exmail.qq.com:25",因此需要一个...

qq_28929589的博客 1万+

go使用邮件发送

package main import ( "fmt" "net/smtp" "strings" ) func SendMail(user, password, host, to, subject, body, mailtype string) error { hp := strings.Split(host, ":") auth := smtp.PlainAuth("", user...

weixin_42239187的博客 1万+
上一篇: Git显示或关闭颜色
下一篇: mac安装RabbitMQ
TCatTime
博客等级 码龄9年 400粉丝 256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值