如何在 Linux 上使用 Gmail SMTP 伺服器傳送郵件通知
假定你想配置一個 Linux 應用,用於從你的伺服器或桌面客戶端傳送郵件資訊。郵件資訊可能是郵件簡報、狀態更新(如 Cachet)、監控警報(如 Monit)、磁碟時間(如 RAID mdadm)等等。當你要建立自己的 郵件傳送伺服器 傳遞資訊時 ,你可以替代使用一個免費的公共 SMTP 伺服器,從而避免遭受維護之苦。
谷歌的 Gmail 服務就是最可靠的 免費 SMTP 伺服器 之一。想要從應用中傳送郵件通知,你僅需在應用中新增 Gmail 的 SMTP 伺服器地址和你的身份憑證即可。
使用 Gmail 的 SMTP 伺服器會遇到一些限制,這些限制主要用於阻止那些經常濫用伺服器來傳送垃圾郵件和使用郵件營銷的傢伙。舉個例子,你一次只能給至多 100 個地址傳送資訊,並且一天不能超過 500 個收件人。同樣,如果你不想被標為垃圾郵件傳送者,你就不能傳送過多的不可投遞的郵件。當你達到任何一個限制,你的 Gmail 賬戶將被暫時的鎖定一天。簡而言之,Gmail 的 SMTP 伺服器對於你個人的使用是非常棒的,但不適合商業的批量郵件。
說了這麼多,是時候向你們展示 如何在 Linux 環境下使用 Gmail 的 SMTP 伺服器 了。
Google Gmail SMTP 伺服器設定
如果你想要通過你的應用使用 Gmail 的 SMTP 伺服器傳送郵件,請牢記接下來的詳細說明。
- 郵件傳送伺服器 (SMTP 伺服器): smtp.gmail.com
- 使用認證: 是
- 使用安全連線: 是
- 使用者名稱: 你的 Gmail 賬戶 ID (比如 “alice” ,如果你的郵箱為 alice@gmail.com)
- 密碼: 你的 Gmail 密碼
- 埠: 587
確切的配置根據應用會有所不同。在本教程的剩餘部分,我將向你展示一些在 Linux 上使用 Gmail SMTP 伺服器的應用示例。
從命令列傳送郵件
作為第一個例子,讓我們嘗試最基本的郵件功能:使用 Gmail SMTP 伺服器從命令列傳送一封郵件。為此,我將使用一個稱為 mutt 的命令列郵件客戶端。
先安裝 mutt:
對於 Debian-based 系統:
$ sudo apt-get install mutt
對於 Red Hat based 系統:
$ sudo yum install mutt
建立一個 mutt 配置檔案(~/.muttrc),並和下面一樣,在檔案中指定 Gmail SMTP 伺服器資訊。將 <gmail-id> 替換成自己的 Gmail ID。注意該配置只是為了傳送郵件而已(而非接收郵件)。
$ vi ~/.muttrc
set from = "<gmail-id>@gmail.com" set realname = "Dan Nanni" set smtp_url = "smtp://<gmail-id>@smtp.gmail.com:587/" set smtp_pass = "<gmail-password>"
一切就緒,使用 mutt 傳送一封郵件:
$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com
想在一封郵件中新增附件,使用 “-a” 選項
$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com -a ~/test_attachment.jpg
使用 Gmail SMTP 伺服器意味著郵件將顯示是從你 Gmail 賬戶發出的。換句話說,收件人將視你的 Gmail 地址為發件人地址。如果你想要使用自己的域名作為郵件傳送方,你需要使用 Gmail SMTP 轉發服務。
當伺服器重啟時傳送郵件通知
如果你在 虛擬專用伺服器(VPS) 上跑了些重要的網站,建議監控 VPS 的重啟行為。作為一個更為實用的例子,讓我們研究如何在你的 VPS 上為每一次重啟事件建立郵件通知。這裡假設你的 VPS 上使用的是 systemd,並向你展示如何為自動郵件通知建立一個自定義的 systemd 啟動服務。
首先建立下面的指令碼 reboot_notify.sh,用於負責郵件通知。
$ sudo vi /usr/local/bin/reboot_notify.sh
#!/bin/sh echo "`hostname` was rebooted on `date`" | mutt -F /etc/muttrc -s "Notification on `hostname`" alice@yahoo.com
$ sudo chmod +x /usr/local/bin/reboot_notify.sh
在這個指令碼中,我使用 “-F” 選項,用於指定系統級的 mutt 配置檔案位置。因此不要忘了建立 /etc/muttrc 檔案,並如前面描述的那樣填入 Gmail SMTP 資訊。
現在讓我們建立如下一個自定義的 systemd 服務。
$ sudo mkdir -p /usr/local/lib/systemd/system $ sudo vi /usr/local/lib/systemd/system/reboot-task.service
[Unit] Description=Send a notification email when the server gets rebooted DefaultDependencies=no Before=reboot.target [Service] Type=oneshot ExecStart=/usr/local/bin/reboot_notify.sh [Install] WantedBy=reboot.target
在建立服務後,新增並啟動該服務。
$ sudo systemctl enable reboot-task $ sudo systemctl start reboot-task
從現在起,在每次 VPS 重啟時,你將會收到一封通知郵件。
通過伺服器使用監控傳送郵件通知
作為最後一個例子,讓我展示一個現實生活中的應用程式,Monit,這是一款極其有用的伺服器監控應用程式。它帶有全面的 VPS 監控能力(比如 CPU、記憶體、程式、檔案系統)和郵件通知功能。
如果你想要接收 VPS 上由 Monit 產生的任何事件的郵件通知,你可以在 Monit 配置檔案中新增以下 SMTP 資訊。
set mailserver smtp.gmail.com port 587 username "<your-gmail-ID>" password "<gmail-password>" using tlsv12 set mail-format { from: <your-gmail-ID>@gmail.com subject: $SERVICE $EVENT at $DATE on $HOST message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION. Yours sincerely, Monit } # the person who will receive notification emails set alert alice@yahoo.com
這是一個因為 CPU 負載超載而由 Monit 傳送的郵件通知的例子。
總結
如你所見,類似 Gmail 這樣免費的 SMTP 伺服器有著這麼多不同的運用方式 。但再次重申,請牢記免費的 SMTP 伺服器不適用於商業用途,僅僅適用於個人專案。無論你正在哪款應用中使用 Gmail SMTP 伺服器,歡迎自由分享你的用例。
相關文章
- Linux 上使用 Gmail SMTP 伺服器傳送郵件通知LinuxAI伺服器
- gmail傳送郵件AI
- 配置mail使用SMTP傳送郵件AI
- Python SMTP傳送郵件Python
- 在Python如何使用SMTP傳送郵件Python
- Jmeter——SMTP Sampler傳送郵件JMeter
- python實現基於smtp傳送郵件Python
- SMTP操作使用詳解並透過python進行smtp郵件傳送示例Python
- SMTP協議解讀以及如何使用SMTP協議傳送電子郵件協議
- WPForms和 WP Mail SMTP – 最好的WordPress SMTP郵件傳送外掛ORMAI
- 【python】用SMTP模組傳送帶附件的郵件Python
- 一次性解決python smtp 傳送outlook郵件,163郵件,qq郵件等等.Python
- 一次郵件傳送協議SMTP問題排查協議
- 軟體測試學習教程——Python SMTP傳送郵件Python
- 使用phpmailer傳送郵件PHPAI
- 使用 smtplib 傳送郵件
- [Gmail] 介紹一個通過 Gmail IMAP 服務傳送郵件的配置坑點AI
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- 使用阿里雲傳送郵件阿里
- 如何使用Excel傳送郵件?Excel
- 郵件傳送
- 傳送郵件
- Linux基礎命令---sendmail傳送郵件LinuxAI
- Linux Centos7傳送QQ郵件LinuxCentOS
- 使用Apache commons email傳送郵件ApacheAI
- .NET Core使用FluentEmail傳送郵件AI
- springboot如何使用outlook傳送郵件Spring Boot
- java郵件傳送Java
- python傳送郵件Python
- Django——郵件傳送Django
- phpcms傳送郵件PHP
- 郵件的傳送
- Laravel 傳送郵件Laravel
- thinkjs 傳送郵件JS
- SpringBoot傳送郵件Spring Boot
- SpringBoot郵件傳送Spring Boot
- Laravel傳送郵件Laravel
- PHP傳送郵件PHP
- nodejs 傳送郵件NodeJS