You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:22:20