基于Azure Communication Service的Golang邮件发送实现需求
Golang实现Azure Communication Service邮件发送方案
依赖安装
首先安装Azure官方的邮件通信SDK:
go get github.com/Azure/azure-sdk-for-go/sdk/communication/azemail
完整实现代码
以下是对应你Python版本的Golang实现,包含连接初始化、邮件构建、发送及错误处理:
package main import ( "context" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/communication/azemail" ) func main() { // 替换为你的Azure Communication Service连接字符串 connectionString := "endpoint=https://announcement.unitedstates.communication.azure.com/;accesskey=***********" // 初始化邮件客户端 client, err := azemail.NewClientFromConnectionString(connectionString, nil) if err != nil { fmt.Printf("初始化客户端失败: %v\n", err) return } // 构建邮件消息 message := azemail.EmailMessage{ SenderAddress: to.Ptr("DoNotReply@domain.com"), Recipients: &azemail.EmailRecipients{ To: []azemail.EmailAddress{ {Address: to.Ptr("example@gmail.com")}, }, }, Content: &azemail.EmailContent{ Subject: to.Ptr("Test Email"), PlainText: to.Ptr("Hello world via email."), }, } // 发送邮件并等待结果 poller, err := client.BeginSend(context.TODO(), message, nil) if err != nil { fmt.Printf("发送邮件请求失败: %v\n", err) return } result, err := poller.PollUntilDone(context.TODO(), nil) if err != nil { fmt.Printf("等待发送结果失败: %v\n", err) return } fmt.Printf("邮件发送成功,消息ID: %s\n", *result.MessageID) }
关键说明
- 客户端初始化:使用
NewClientFromConnectionString直接通过连接字符串创建客户端,对应Python的EmailClient.from_connection_string,无需额外复杂配置。 - 邮件结构体:
azemail.EmailMessage与Python中的消息字典结构一一对应,注意用to.Ptr处理指针类型字段(Golang SDK的类型要求)。 - 发送与轮询:
BeginSend返回轮询器,通过PollUntilDone等待发送完成,对应Python的poller.result()逻辑。
注意事项
- 确保连接字符串拥有邮件发送的权限。
- 发件人地址必须是Azure Communication Service中已验证的域名或邮箱地址。
- 如需发送HTML内容,只需在
EmailContent中添加HTML字段并赋值即可。
内容的提问来源于stack exchange,提问作者Bahar_Engineer
相关产品推荐
相关产品推荐

