Як надіслати пошту з командного рядка?


215

Як надіслати пошту з командного рядка?


1

1
Також можна використовувати сосну.
Каве

1
Ви також можете встановити msmtp та слідувати вказівкам, описаним у ArchWiki
Thiago Perrotta

2
Дуже погано, що відповіді на це настільки застаріли. Це важливе питання, яким можна скористатись хорошим підручником
6005

Відповіді:


36

Спробуйте встановити клієнт електронної пошти Mutt . Інший варіант - використання emacs з gnus . Інші варіанти також доступні ... IMHO, ви повинні використовувати більше деталей у своїх питаннях або кілька різних відповідей на своє запитання, яке ви отримаєте :-)


2
Приймається цей, оскільки він не потребує будь-якої конфігурації і досить зручний у користуванні.
Олів'є Лалонде

21
чекати. mutt - зручний для користувача? самий божевільний однолінійний, який я сьогодні читав :)
Стенн

155
  1. Встановити ssmtp Встановіть ssmtp :

    sudo apt-get install ssmtp
    
  2. Редагуйте конфігураційний файл ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Додайте наступний текст:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Запустіть ssmtp та введіть електронну адресу одержувача:

    ssmtp recepient_name@gmail.com
    
  5. Надайте деталі повідомлення наступним чином:

    To: recipient_name@gmail.com
    From: username@gmail.com
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Натисніть Ctrl+, Dщоб надіслати.


Ви також можете помістити текст у файл і надіслати його наступним чином:

ssmtp recipient_name@gmail.com < filename.txt

29
Зрозуміло, залишаючи мій пароль електронної пошти відкритим у якомусь файлі на комп’ютері. Це безпечно?
oadams

2
@oadams не дуже безпечний. Використовуйте двоетапну перевірку, щоб знизити ризик або використовуйте поштовий шлюз, який не потребує пароля, як, наприклад, у вашого провайдера.
itadok

5
Не встановлюйте ssmtp на сервер із встановленим постфіксом. Постфікс буде видалено. Замість цього просто використовуйте sendmail user@example.com <file.txt, який буде працювати з postfix або ssmtp.
Алістер Бакстон

2
Ще одна дивна річ, якою я хотів поділитися тут, це те, що вона не працювала для мене, коли я мав довгий / складний пароль, але працював, коли я змінив його на простий пароль, дивний, але правдивий. Я також чув те ж саме від когось іншого, але спробував це після багатьох невдалих спроб надіслати пошту, і як тільки я спростив пароль, на моє здивування, це просто спрацювало;)
Rajat Gupta,

Якщо Gmail не дозволяє вашому серверу отримати доступ, увійдіть до Gmail на сервері за допомогою браузера командного рядка. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee

87

Більшу частину часу вам не потрібно буде налаштовувати SMTP-сервер, який ви можете просто використовувати mailз командного рядка (якщо його ще немає, встановіть разом sudo apt-get install mailutils). (Або якщо ви перебуваєте на сервері, де налаштовано sendmail тощо)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Ви припиняєте повідомлення одним синглом .в мережі. Саме тоді mailбуде запропоновано Cc:ввести інформацію (або залишити порожньою), а mailпотім надрукує додаткову інформацію про те, що вона намагається зробити, а також деталізує обробку з'єднань, передачі та отримання даних з поштового сервера.


28
Я додаю відповідь, щоб вона включала "sudo apt-get install mailutils", оскільки вона не присутня в чистій установці Ubuntu 10.04. Також припинення повідомлення за допомогою a. по одній лінії не вийшло. Мені довелося замість цього "Ctrl-D". Нарешті, повідомлення не пройшло!
Олів'є Лалонде

7
@OlivierLalonde sudo apt-get install mailutilsвстановить SMTP-сервер, який є postfix, що може бути трохи переваженим для деяких людей.
vaab

5
mailutils також встановить mysql!
chmike

17
-v варіант не в моїй установці пошти 2.99.98, також довелося використовувати Ctrl + D для закінчення
markmnl

2
Оновіть це питання, воно застаріле.
Blauhirn

47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

використання:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 

Якщо ви не хочете вказувати свій пароль в командному рядку (як правило, це не дуже добре), ви можете опустити цей параметр, і sendemail запропонує вам ввести пароль ... і відобразити його на екрані, але принаймні це не буде в історії вашого командного рядка.


Надсилання пошти з облікового запису GMail з використанням sendmailбільшості визначеності дуже зручно. Дякую.
Марк Томлін

Знайдіть тут патч, щоб не повторити пароль.
Арун

Мені довелося вказати порт -s smtp.gmail.com:587.
Джо Морнін

5
додайте пробіл перед командним рядком, щоб не зберегти його в історії командного рядка
guhur

інший спосіб не відображати його на екрані bash: зберегти пароль у файл, потім із змінної файлу в середовище, наприклад: pass=$(cat my_password); sendemail... -xp $name ...і, звичайно, якщо ви його запрошуєте програмно, ви можете зробити щось подібне, наприклад: ruby system("sendemail ... -xp #{File.read 'my_password'}...")також може вийти з ладу Перший раз вам слід надіслати електронний лист до цього облікового запису, який пропонує "ввімкнути менш захищені програми", то він може працювати.
rogerdpack

23

mpack - відмінний командний спосіб надсилання файлів.

apt-get install mpack

використання:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn

20

Для надсилання пошти вам потрібен MTA. Для цього використовуйте постфікс:

sudo apt-get install postfix

Щоб надіслати електронний лист:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com

ДОПОМОГА


Вам також потрібно встановити mailutils для mailx, правда?
Нік

4
Я б хотів, щоб це було справді просто, але якщо ти хтось особливий, це не спрацює. 99,9999% провайдерів ігноруватимуть пошту з приватних серверів Postfix, оскільки 9,99999 разів із 10 вони є спамерами.
Серін

це не спрацювало для мене, його попросили встановити, mailutilsколи я ввів це в термінал
Mostafiz Rahman,

Вперед і встановіть поштові комунальні послуги. Вам не потрібен постфікс IIRC.
uav

@Cerin має рацію. Мені потрібна була дуже проста функція розсилки для роботи з cron. Як вирішення, якщо ви отримуєте через обліковий запис gmail, ви можете встановити фільтр для електронної пошти (за допомогою ключових слів або з адреси), і gmail дозволить її надсилати.
Керрі Кендалл

15

Встановіть пакет, sendmailа потім наберіть

sendmail -t receiver@example 

потім напишіть свій електронний лист та натисніть Ctrl + D


10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

або

cat "afile" | mail -s "subject" someone@dest_email.com

просто додати для легкого тестування: відлуння "Привіт, світ!" | mail -s "Привіт" mail@example.org
Боне

2
Якщо у когось немає поштової команди, просто запустіть: sudo apt-get install mailutilsв Ubuntu / Debian або yum install mailxв CentOS / Redhat
Джованні Бенуссі

9

Ви можете надіслати електронний лист із командного рядка за допомогою TelNet або NetCat .

Все пояснюється тут .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404

2
Трохи важко використовувати SSL при використанні цього методу;)
iX3

1
@ iX3 просто використовуй, swaksі ти теж добре із SSL / TLS ;-)
Гермар

Абоopenssl s_client -starttls smtp ...
Раман

7

Якщо ви намагаєтеся надіслати електронну пошту з системи, яка не працює з власним сервером електронної пошти (тобто настільною системою), вам потрібно встановити щось на зразок nullmailer або esmtp , яке пересилає вашу локальну пошту до "справжньої" пошти сервер.

В якості інструментів командного рядка можна встановити mail або mailx (пакунки mailutils, heirloom-mailx або bsd-mailx). Якщо вам потрібні вкладення, спробуйте biabam.


1
Мені подобається bsd-mailx для команди -E та cronjobs
meffect

6

Я ніколи цього не пробував, але є mailкоманда, яка може надсилати пошту. Дивіться людині пошту .

Щоб перевірити локальну електронну пошту:

echo message | mail username@localhost

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

де filenameте саме: воно означає вхідний файл та віддалений файл.


sudo apt-get install sharutilsзаuuencode
Янус Трольсен

1
mailutils встановлює mysql! оо
chmike

3

Ви можете спробувати це:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Він працює з GNU Mailutils , перегляньте веб-сайт для отримання додаткової інформації.


2

Виконати :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

Тут потрібно додати:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Виконати :

sudo -H gedit /etc/ssmtp/revaliases

Введіть туди:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587

Увімкніть "менш безпечні додатки" в Gmail:
https://support.google.com/accounts/answer/6010255?hl=uk

Перевірте це, запустивши на терміналі наступне:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`

1

На додаток до вище, я ще отримував цю помилку

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

РІШЕННЯ: виконайте скидання пароля gmail навіть у випадку правильного поточного пароля ... можливо, запобіжні заходи Google

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.