-
-
Save andelf/5004821 to your computer and use it in GitHub Desktop.
package main | |
import ( | |
"log" | |
"net/mail" | |
"encoding/base64" | |
"net/smtp" | |
"fmt" | |
"strings" | |
) | |
func encodeRFC2047(String string) string{ | |
// use mail's rfc2047 to encode any string | |
addr := mail.Address{String, ""} | |
return strings.Trim(addr.String(), " <>") | |
} | |
func main() { | |
// Set up authentication information. | |
smtpServer := "smtp.163.com" | |
auth := smtp.PlainAuth( | |
"", | |
"fledna@163.com", | |
"password*******", | |
smtpServer, | |
) | |
from := mail.Address{"监控中心", "fledna@163.com"} | |
to := mail.Address{"收件人", "name@139.com"} | |
title := "当前时段统计报表" | |
body := "报表内容一切正常"; | |
header := make(map[string]string) | |
header["From"] = from.String() | |
header["To"] = to.String() | |
header["Subject"] = encodeRFC2047(title) | |
header["MIME-Version"] = "1.0" | |
header["Content-Type"] = "text/plain; charset=\"utf-8\"" | |
header["Content-Transfer-Encoding"] = "base64" | |
message := "" | |
for k, v := range header { | |
message += fmt.Sprintf("%s: %s\r\n", k, v) | |
} | |
message += "\r\n" + base64.StdEncoding.EncodeToString([]byte(body)) | |
// Connect to the server, authenticate, set the sender and recipient, | |
// and send the email all in one step. | |
err := smtp.SendMail( | |
smtpServer + ":25", | |
auth, | |
from.Address, | |
[]string{to.Address}, | |
[]byte(message), | |
//[]byte("This is the email body."), | |
) | |
if err != nil { | |
log.Fatal(err) | |
} | |
} |
Can you give me some idea about how to receive email with golang
nice!! thanks you!!
I created Gomail, a package to easily send emails if you are interested.
Thank's !
Nice work. Thanks!.
is working, thank you!
Not working for me. I am getting error like:
2015/05/19 17:38:49 x509: certificate has expired or is not yet valid
exit status 1
Thank you!
I got this error for using gmail 2015/11/26 14:56:43 x509: certificate signed by unknown authority
Like a charm 👍
Than you !
+1
thank you
Thank you
Thank you
Little bit correct it: return strings.Trim(addr.String(), " <@>")
Thank you :)
Thank, Bro. U saved my weekend.
I'd prefer to use the official package mime
to encode title(subject) in RFC 2047:
import (
"mime"
)
// ...
// header["Subject"] = encodeRFC2047(title)
header["Subject"] = mime.QEncoding.Encode("UTF-8", title)
// ...
@andelf thank you 😀
@goldenmean58 👍
Thanks!!! I am struggling for hours. My old code worked with G-Mail and Yahoo but not with smaller mail services. THANKS AGAIN
very good, thx