{"id":443,"date":"2023-10-12T13:12:40","date_gmt":"2023-10-12T05:12:40","guid":{"rendered":"https:\/\/blog.xjfvps.top\/?p=443"},"modified":"2023-10-12T21:12:19","modified_gmt":"2023-10-12T13:12:19","slug":"%e5%a4%9a%e7%a7%8dfailover%e7%ad%96%e7%95%a5%e7%9a%84%e5%ae%9e%e7%8e%b0%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f%e7%9a%84%e6%b2%bb%e7%90%86","status":"publish","type":"post","link":"https:\/\/blog.fs.cloudns.biz\/index.php\/2023\/10\/12\/%e5%a4%9a%e7%a7%8dfailover%e7%ad%96%e7%95%a5%e7%9a%84%e5%ae%9e%e7%8e%b0%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f%e7%9a%84%e6%b2%bb%e7%90%86\/","title":{"rendered":"\u8c08\u90ae\u4ef6\u7cfb\u7edf\u7684\u6cbb\u7406\uff1a\u591a\u79cdFailover\u7b56\u7565\u7684\u5b9e\u73b0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u968f\u7740\u7535\u5b50\u90ae\u4ef6\u6210\u4e3a\u6211\u4eec\u65e5\u5e38\u751f\u6d3b\u548c\u4e1a\u52a1\u901a\u4fe1\u7684\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\uff0c\u6784\u5efa\u4e00\u4e2a\u53ef\u9760\u7684\u90ae\u4ef6\u7cfb\u7edf\u53d8\u5f97\u81f3\u5173\u91cd\u8981\u3002\u7cfb\u7edf\u4e2d\u7684\u4efb\u4f55\u6545\u969c\u90fd\u53ef\u80fd\u5bfc\u81f4\u90ae\u4ef6\u4ea4\u4ed8\u4e2d\u65ad\uff0c\u8fd9\u5bf9\u4e1a\u52a1\u8fd0\u8425\u548c\u5ba2\u6237\u6ee1\u610f\u5ea6\u90fd\u4f1a\u5e26\u6765\u8d1f\u9762\u5f71\u54cd\u3002\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Golang\u6784\u5efa\u4e00\u4e2a\u90ae\u4ef6\u7cfb\u7edf\uff0c\u5e76\u5b9e\u65bd\u591a\u79cdFailover\u7b56\u7565\uff0c\u4ee5\u786e\u4fdd\u7cfb\u7edf\u7684\u9c81\u68d2\u6027\u548c\u53ef\u9760\u6027\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Golang\u90ae\u4ef6\u7cfb\u7edf\u57fa\u7840<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u57fa\u672c\u7684\u90ae\u4ef6\u7cfb\u7edf\u6846\u67b6\u3002\u4f7f\u7528Golang\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u7b2c\u4e09\u65b9\u5e93\u5982<code>net\/smtp<\/code>\u548c<code>go-gomail\/gomail<\/code>\u6765\u6784\u5efa\u8fd9\u4e2a\u7cfb\u7edf\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\u4ee3\u7801\u7247\u6bb5\uff0c\u7528\u4e8e\u53d1\u9001\u90ae\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"log\"\n    \"net\/smtp\"\n)\n\nfunc main() {\n    \/\/ \u90ae\u4ef6\u670d\u52a1\u5668\u7684\u5730\u5740\u548c\u7aef\u53e3\n    smtpServer := \"smtp.example.com:587\"\n\n    \/\/ \u53d1\u4ef6\u4eba\u7684\u8ba4\u8bc1\u4fe1\u606f\n    auth := smtp.PlainAuth(\"\", \"your_username\", \"your_password\", \"example.com\")\n\n    \/\/ \u6784\u5efa\u90ae\u4ef6\u5185\u5bb9\n    from := \"sender@example.com\"\n    to := []string{\"recipient@example.com\"}\n    message := []byte(\"Subject: Hello\\n\\nThis is the email body.\")\n\n    \/\/ \u53d1\u9001\u90ae\u4ef6\n    err := smtp.SendMail(smtpServer, auth, from, to, message)\n    if err != nil {\n        log.Fatal(err)\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Failover\u7b56\u7565\u4e00\uff1a\u5907\u7528SMTP\u670d\u52a1\u5668<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u5e94\u5bf9SMTP\u670d\u52a1\u5668\u6545\u969c\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9e\u65bd\u5907\u7528SMTP\u670d\u52a1\u5668\u7684Failover\u7b56\u7565\u3002\u5f53\u4e3b\u8981SMTP\u670d\u52a1\u5668\u4e0d\u53ef\u7528\u65f6\uff0c\u6211\u4eec\u5c06\u81ea\u52a8\u5207\u6362\u5230\u5907\u7528SMTP\u670d\u52a1\u5668\u53d1\u9001\u90ae\u4ef6\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"log\"\n    \"net\/smtp\"\n)\n\nfunc sendMailWithFailover(primaryServer, secondaryServer string, auth smtp.Auth, from string, to []string, message []byte) {\n    err := smtp.SendMail(primaryServer, auth, from, to, message)\n    if err != nil {\n        log.Printf(\"Primary server error: %v. Trying secondary server...\", err)\n        err = smtp.SendMail(secondaryServer, auth, from, to, message)\n        if err != nil {\n            log.Printf(\"Secondary server error: %v. Mail delivery failed.\", err)\n        }\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Failover\u7b56\u7565\u4e8c\uff1a\u961f\u5217\u548c\u91cd\u8bd5<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53e6\u4e00\u4e2a\u91cd\u8981\u7684Failover\u7b56\u7565\u662f\u5c06\u90ae\u4ef6\u653e\u5165\u961f\u5217\u5e76\u5b9a\u671f\u91cd\u8bd5\u53d1\u9001\u3002\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u5e94\u5bf9\u6682\u65f6\u7684SMTP\u670d\u52a1\u5668\u6545\u969c\u6216\u7f51\u7edc\u95ee\u9898\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"log\"\n    \"net\/smtp\"\n    \"time\"\n)\n\nfunc sendMailWithRetry(smtpServer string, auth smtp.Auth, from string, to []string, message []byte, maxRetries int) {\n    for retry := 0; retry &lt; maxRetries; retry++ {\n        err := smtp.SendMail(smtpServer, auth, from, to, message)\n        if err == nil {\n            log.Printf(\"Email sent successfully.\")\n            return\n        }\n        log.Printf(\"Error sending email: %v. Retrying in 5 seconds...\", err)\n        time.Sleep(5 * time.Second)\n    }\n    log.Printf(\"Max retries reached. Mail delivery failed.\")\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7ed3\u8bba<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6784\u5efa\u4e00\u4e2a\u53ef\u9760\u7684\u90ae\u4ef6\u7cfb\u7edf\u9700\u8981\u4ed4\u7ec6\u8003\u8651Failover\u7b56\u7565\uff0c\u4ee5\u786e\u4fdd\u90ae\u4ef6\u7684\u53ef\u9760\u4ea4\u4ed8\u3002\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528Golang\u6f14\u793a\u4e86\u4e24\u79cdFailover\u7b56\u7565\uff1a\u5907\u7528SMTP\u670d\u52a1\u5668\u548c\u961f\u5217\/\u91cd\u8bd5\u3002\u5b9e\u9645\u7cfb\u7edf\u53ef\u80fd\u9700\u8981\u66f4\u591a\u529f\u80fd\uff0c\u5982\u90ae\u4ef6\u961f\u5217\u7ba1\u7406\u548c\u76d1\u63a7\u3002\u4f46\u8fd9\u4e2a\u793a\u4f8b\u53ef\u4ee5\u5e2e\u52a9\u60a8\u5f00\u59cb\u6784\u5efa\u4e00\u4e2a\u7a33\u5065\u7684\u90ae\u4ef6\u7cfb\u7edf\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u968f\u7740\u7535\u5b50\u90ae\u4ef6\u6210\u4e3a\u6211\u4eec\u65e5\u5e38\u751f\u6d3b\u548c\u4e1a\u52a1\u901a\u4fe1\u7684\u4e0d\u53ef\u6216\u7f3a\u7684\u4e00\u90e8\u5206\uff0c\u6784\u5efa\u4e00\u4e2a\u53ef\u9760\u7684\u90ae\u4ef6\u7cfb\u7edf &hellip; <a href=\"https:\/\/blog.fs.cloudns.biz\/index.php\/2023\/10\/12\/%e5%a4%9a%e7%a7%8dfailover%e7%ad%96%e7%95%a5%e7%9a%84%e5%ae%9e%e7%8e%b0%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f%e7%9a%84%e6%b2%bb%e7%90%86\/\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-443","post","type-post","status-publish","format-standard","hentry","category-golang"],"_links":{"self":[{"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/posts\/443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/comments?post=443"}],"version-history":[{"count":3,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/posts\/443\/revisions"}],"predecessor-version":[{"id":453,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/posts\/443\/revisions\/453"}],"wp:attachment":[{"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/media?parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/categories?post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fs.cloudns.biz\/index.php\/wp-json\/wp\/v2\/tags?post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}