GO 发送邮件,官方连包都帮我们写好了

GO 发送邮件,官方连包都帮我们写好了,真是贴心啊!!!,突然间感觉php不香了。。。

package main

import (
	"fmt"
	"net/smtp"
	"strings"
)

func SendToMail(user,sendUserName,password, host, to, subject, body, mailtype string) error {
	hp := strings.Split(host, ":")
	auth := smtp.PlainAuth("", user, password, hp[0])
	var content_type string
	if mailtype == "html" {
		content_type = "Content-Type: text/" + mailtype + "; charset=UTF-8"
	} else {
		content_type = "Content-Type: text/plain" + "; charset=UTF-8"
	}

	msg := []byte("To: " + to + "\r\nFrom: " + sendUserName+"<"+user+">" + "\r\nSubject: " +subject+ "\r\n" + content_type + "\r\n\r\n" + body)
	send_to := strings.Split(to, ";")
	err := smtp.SendMail(host, auth, user, send_to, msg)
	return err
}

func main() {
	user := "admin@buruyouni.com"
	password := "**你的密码**"
	host := "smtpdm.aliyun.com:80"
	to := "269754243@qq.com"

	subject := "使用Golang发送邮件"

	body := `
		<!DOCTYPE html>
		<html lang="en">
		<head>
			<meta charset="iso-8859-15">
			<title>MMOGA POWER</title>
		</head>
		<body>
			GO 发送邮件,官方连包都帮我们写好了,真是贴心啊!!!
		</body>
		</html>`

	sendUserName := "GOLANG SEND MAIL"//发送邮件的人名称
	fmt.Println("send email")
	err := SendToMail(user,sendUserName,password, host, to, subject, body, "html")
	if err != nil {
		fmt.Println("Send mail error!")
		fmt.Println(err)
	} else {
		fmt.Println("Send mail success!")
	}

}

 

没错,官方连smtp包都写好了

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中使用Kafka发送数据时,如果出现断连的情况,可以通过以下步骤进行重连: 1. 创建Kafka生产者配置:使用`sarama.NewConfig()`函数创建一个Kafka生产者的配置对象。 2. 设置重连参数:通过配置对象的`Producer.Return.Errors`和`Producer.Return.Successes`属性,设置是否接收错误和成功的回调信息。 3. 创建Kafka生产者:使用`sarama.NewAsyncProducer()`函数创建一个Kafka生产者对象。 4. 监听错误和成功回调:通过`Producer.Errors()`和`Producer.Successes()`方法,监听错误和成功的回调信息。 5. 发送消息:使用`Producer.Input()`方法将消息发送到Kafka集群。 当出现断连时,可以在错误回调中进行重连操作。以下是一个示例代码: ```go package main import ( "fmt" "log" "os" "os/signal" "time" "github.com/Shopify/sarama" ) func main() { config := sarama.NewConfig() config.Producer.Return.Successes = true config.Producer.Return.Errors = true producer, err := sarama.NewAsyncProducer([]string{"localhost:9092"}, config) if err != nil { log.Fatal(err) } defer func() { if err := producer.Close(); err != nil { log.Fatal(err) } }() signals := make(chan os.Signal, 1) signal.Notify(signals, os.Interrupt) go func() { for { select { case err := <-producer.Errors(): log.Println("Failed to produce message:", err.Err) // 进行重连操作 producer.AsyncClose() time.Sleep(3 * time.Second) producer, err = sarama.NewAsyncProducer([]string{"localhost:9092"}, config) if err != nil { log.Fatal(err) } case <-signals: return } } }() msg := &sarama.ProducerMessage{ Topic: "my_topic", Value: sarama.StringEncoder("Hello, Kafka!"), } producer.Input() <- msg select { case <-producer.Successes(): fmt.Println("Message sent successfully") case <-producer.Errors(): fmt.Println("Failed to send message") } } ``` 这段代码中,我们使用`sarama`库来操作Kafka。在错误回调中,我们进行了重连操作,然后重新创建了一个Kafka生产者对象。在发送消息时,我们通过`producer.Input()`方法将消息发送到Kafka集群,并通过`producer.Successes()`和`producer.Errors()`方法监听发送结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值