Làm cách nào để gửi email thông qua lệnh UNIX mailx?


Câu trả lời:


108

một ví dụ

$ echo "something" | mailx -s "subject" recipient@somewhere.com

gửi tệp đính kèm

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

và để gửi tệp đính kèm VÀ viết nội dung thư

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Tôi đã thử nó nhưng nó không có phản hồi. Nó không đưa ra một số tin nhắn lỗi cũng như không gửi thư đến myname@gmail.com. Có cần bất kỳ cấu hình máy chủ nào không?
user269484

2
không cần bất kỳ cấu hình nào. Kiểm tra kết nối Internet của bạn. Tôi có kết nối trực tiếp với internet thông qua cáp, tôi không sử dụng proxy hay bất cứ thứ gì nên nó hoạt động bên tôi.
ghostdog 74

2
Bạn cũng nên kiểm tra các thông báo lỗi trong hộp thư đến của mình. Tức là chạy mail.
hafichuk,

2
Tuy nhiên, lưu ý rằng đó uuencodelà công nghệ kế thừa từ một thiên niên kỷ đã qua, không tạo ra những gì chúng ta có nghĩa là "tệp đính kèm" ngày nay. Về cơ bản, nó đặt một phần lộn xộn mà máy có thể đọc được ở cuối nội dung tin nhắn. Trong thời đại ngày nay, bạn sẽ được phục vụ tốt hơn bằng một bưu phẩm nhận biết MIME đúng cách. Thật không may, không có sự mailxthay thế được hỗ trợ phổ biến bằng các tính năng MIME, nhưng nếu bạn có mutt, đó có lẽ là con đường ít kháng cự nhất.
tripleee

5
@ user269484 Gmail không chấp nhận email từ các địa chỉ IP trái phép. Đọc support.google.com/mail/answer/10336
Manas Jayanth

33

Của bạn đây :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

Tái bút. Nội dung và chủ đề nên được giữ trong dấu ngoặc kép. Xóa trích dẫn từ FROM_EMAILTo_EMAILtrong khi thay thế địa chỉ email.


1
Trên máy Mac, bạn sẽ nhận được lỗi từ lệnh mailx nếu bạn sử dụng -r mailx: tùy chọn bất hợp pháp - r Cách sử dụng: mailx [-EiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [ -F] tới-addr ... mailx [-EHiInNv] [-F] -f [name] mailx [-EHiInNv] [-F] [-u user] mailx -e [-f name] mailx -H
jcpennypincher

bạn có thể làm -S from=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

thông qua mailxtiện ích, chúng tôi có thể gửi một tệp từ unixđến mail server. ở đây trong đoạn mã trên, chúng ta có thể thấy tham số đầu tiên là tham số -s "subject of mail" thứ hai mail IDvà tham số cuối cùng là tên tệp mà chúng tôi muốn đính kèm


1
Điều này không đính kèm các tập tin, nó đặt nội dung của tập tin vào cơ thể
Guus

5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c và -b là tùy chọn.

-s: Chỉ định chủ đề; nếu chủ đề chứa khoảng trắng, hãy sử dụng dấu ngoặc kép.

-c: Gửi các bản sao đến danh sách người dùng được phân tách bằng dấu phẩy.

-b: Gửi bản sao mù tới danh sách người dùng được phân tách bằng dấu phẩy.

Hy vọng câu trả lời của tôi làm rõ nghi ngờ của bạn.


5

Nhanh hơn với lệnh MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c danh sách cc email
  2. danh sách chủ đề -s
  3. -y để gửi thư

4

Từ trang người đàn ông:

Đang gửi thư

Để gửi thư cho một hoặc nhiều người, mailx có thể được gọi với các đối số là tên của những người mà thư sẽ được gửi đến. Sau đó, người dùng sẽ phải nhập tin nhắn của mình, theo sau là 'control-D' ở đầu dòng.

Nói cách khác, mailx đọc nội dung cần gửi từ đầu vào chuẩn và có thể được chuyển hướng đến như bình thường. Ví dụ:

ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

Tùy chỉnh địa chỉ TỪ

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

Một ngoại trừ từ thư người đàn ông: -f [tệp] Đọc nội dung của mbox của người dùng (hoặc tệp được chỉ định) để xử lý; khi thoát khỏi mailx, nó sẽ ghi các thư chưa xóa trở lại tệp này. Tệp chuỗi được xử lý như mô tả cho lệnh thư mục bên dưới.
ZJ Lyu

Nó phụ thuộc vào phiên bản bạn đang sử dụng. Có nhiều cạnh tranh không tương thích mailmailxcác lệnh với các tùy chọn khác nhau.
tripleee

1

Đây là một chức năng đa chức năng để giải quyết việc gửi thư với một số tệp đính kèm:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

hàm gọi: enviaremail "smtp.mailserver: port" "from_address" "authuser" "" pass '"" đích "" danh sách các tệp đính kèm được phân tách bằng dấu cách "

Lưu ý: Bỏ dấu ngoặc kép trong cuộc gọi

Ngoài ra, hãy nhớ xác định bên ngoài $ titulo (chủ đề) và $ cuerpo (nội dung) của email trước khi sử dụng hàm


0

Nếu bạn muốn gửi nhiều hơn hai người hoặc DL:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

đây:

  • -s = chủ đề hoặc tiêu đề thư
  • -r = thư người gửi hoặc DL

Bạn có thể vui lòng giải thích tại sao echo được sử dụng để truyền nội dung thư không? Nếu tôi bỏ qua điều này và thực thi từ MailX, con trỏ sẽ nhấp nháy như thể đang chờ một đầu vào.
LonelyRogue
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.