12/08/2018, 13:40

Gửi mail tự động dùng bash shell và mailx

Ở 2 bài trước tôi đã giới thiệu một chút về cron và bash shell, cũng đã đưa ra một ví dụ nhỏ kết hợp xử lý dùng cả 2 cái đó. Trong bài này, tôi sẽ tiếp tục sử dụng những kiến thức đã biết để demo 1 ứng dụng trong thực tế, đó là gửi mail tự động. Case tôi đưa ra là tôi có 1 website, người sử ...

bash.png

Ở 2 bài trước tôi đã giới thiệu một chút về cron và bash shell, cũng đã đưa ra một ví dụ nhỏ kết hợp xử lý dùng cả 2 cái đó. Trong bài này, tôi sẽ tiếp tục sử dụng những kiến thức đã biết để demo 1 ứng dụng trong thực tế, đó là gửi mail tự động. Case tôi đưa ra là tôi có 1 website, người sử dụng có 2 loại là mất phí và miễn phí có thời hạn. Hàng ngày vào một thời điểm nhất định, tôi cho cron chạy để qúet cơ sở dữ liệu kiểm tra xem có những ai sắp hết hạn trial để gửi mail thông báo upgrade tài khoản để có thể tiếp tục sử dụng dịch vụ.

Ở demo này tôi sẽ dử dụng Gmail SMTP để gủi mail nên cần chuẩn bị như sau :

 Note : máy local tôi đang dùng là Ubuntu 14.04

Cài đặt SMTP

Việc này rất đơn gỉan, chỉ cần chạy lệnh sau

sudo apt-get install ssmtp

Thiết lập các thông số SMTP

Khi đã cài đặt xong SMTP trên máy của bạn, hãy mở file thiết lập của nó lên bằng lệnh

sudo vi /etc/ssmtp/ssmtp.conf

Ở trong file này, bạn cần khai báo các thông tin cần thiết và lưu lại !

Root=abc@gmail.com
Mailhub=smtp.gmail.com:465
RewriteDomain=gmail.com
AuthUser=abc@gmail.com
AuthPass=pass
FromLineOverride=Yes
UseTLS=Yes

Hãy thay abc@gmail.com bằng địa chỉ Gmail của bạn và pass là mật khẩu đăng nhập tài khoản.

Cài email client

Tôi sẽ dùng heirloom mailx. Bằng lệnh sau thì email client này sẽ được cài đặt

sudo apt-get install heirloom-mailx

Kiểm tra thử

Để chắc chắn rằng việc thiết lập của bạn không có vấn đề trước khi tiếp tục hãy thử bằng command sau

echo I am testing now | mail -s 'Hi baby' to_email@xyz.com

Hãy thay to_email@xyz.com bằng địa chỉ mail bạn sẽ gửi đến

Trong trường hợp gửi được thì bạn có thể thấy 1 email ở địa chỉ trên nhưng nếu gặp lỗi authorize như sau :

send-mail: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 d1sm4315254pas.48 - gsmtp)

Thì Google đang không cho phép đăng nhập bằng những ứng dụng không có độ an toàn cao và bạn sẽ nhận được 1 email warning trong inbox. Hãy truy cập vào Gmail của bạn để mở link dẫn đến trang của Google rồi setting cho phép điều này.

less_secure_login.png

Sau đó hãy làm lại và kết qủa chạy thử command sẽ có trong giây lát             </div>
            
            <div class=

0