Отправка сообщения из командной строки Unix с использованием mail TO_ADDR приводит к получению сообщения электронной почты от $USER@$HOSTNAME. Есть ли способ изменить адрес «От:», вставленный mail?
Для записи я использую GNU Mailutils 1.1 / 1.2 в Ubuntu (но я видел такое же поведение с Fedora и RHEL).
[РЕДАКТИРОВАТЬ]
$ mail -s Testing [email protected] Cc: From: [email protected] Testing .
дает
Subject: Testing To: <[email protected]> X-Mailer: mail (GNU Mailutils 1.1) Message-Id: <E1KdTJj-00025z-RK@localhost> From: <chris@localhost> Date: Wed, 10 Sep 2008 13:17:23 -0400 From: [email protected] Testing
Строка «From: [email protected]» является частью тела сообщения, а не заголовком.
Гм, почти все. Любой, кто пользуется почтой mailx или berkeley, увидит это именно так. Если вы хотите изменить заголовок, напишите весь заголовок и отправьте его напрямую с помощью rmail или sendmail.
О, но, извините, я использую GenToo.
Для записи я использую mailx, и пример, который приводит Крис, работает. Или ты это имел в виду?
Винко, а какая у тебя версия UN * X? Вы имеете в виду под словом «работает», что вы получаете его результаты или желаемое поведение, которое отвечало бы его потребностям? Это в некоторой степени зависит от того, как отправка сообщений работает на вашей платформе и добавляет ли клиент пустую строку перед
С man mail: -r address Sets the From address. Overrides any from variable specified in environment or startup files.





Вот несколько вариантов:
Если у вас достаточно привилегий, настройте sendmail для перезаписи с помощью таблицы generics.
Напишите весь заголовок самостоятельно (или отправьте его себе по почте, сохраните все сообщение со всеми заголовками, отредактируйте заново и отправьте его с помощью rmail из командной строки.
Отправляйте напрямую с помощью sendmail, используйте флаг командной строки «-f» и не включайте строку «От:» в свое сообщение.
Это не совсем одно и то же, но я оставлю это на ваше усмотрение.
На моем портативном компьютере у меня есть sendmail, который аутентифицируется как клиент на сервере исходящей почты, и я использую универсальные методы, чтобы возвращающая почта приходила на другую учетную запись. Работает как часы. Я собираю входящую почту с помощью fetchmail.
В моей версии почты (Debian linux 4.0) для управления адресами источника / ответа работают следующие параметры.
так что следующая последовательность
export [email protected]
mail -aFrom:[email protected] -s 'Testing'
В результате в моих почтовых клиентах получается письмо с адреса [email protected], и все ответы на него по умолчанию будут на [email protected].
NB: Пользователи Mac OS: у вас нет -a, но есть $ REPLYTO
NB (2): Пользователи CentOS, многие комментаторы добавили, что вам нужно использовать -r, а не -a
NB (3): Этому ответу не менее десяти лет (1), имейте это в виду, когда будете приходить из Google.
Я просто проверил его еще раз, чтобы убедиться, и он отлично работает для меня. Не все почтовые клиенты хорошо работают с Reply-To, но я думал, что к настоящему времени это решенная проблема. Переменная REPLYTO env упоминается на странице руководства, другие почтовые программы UNIX соблюдают ее, emacs и т. д. Тем не менее, я думаю, у вас есть исправление.
Не думаю, что дело в почтовом клиенте ... Я не вижу заголовка Reply-To в необработанном тексте сообщения. Но да, -a достаточно.
Нет, это не так. Но: «Полное руководство GNU mailutils недоступно в системах Debian по причинам лицензирования». -aReply-To: ... работает.
Я также не вижу упоминания REPLYTO на gnu.org/software/mailutils/manual/mailutils.html
Спасибо за ответ. Мой / usr / bin / mail происходит из пакета mailx, который, как мне кажется, унаследован от BSD-mail. И большинство моих unix-машин - это BSD.
У меня это работает на Ubuntu, но я получаю mail: invalid option -- a на CentOS.
в CentOS опция mail -a означает «вложение». Мне нужно было использовать -r как mail -r [email protected]
это сработало для меня
echo "hi root"|mail [email protected] -s'testinggg' root
На Centos 5.3 я могу:
mail -s "Subject" [email protected] -- -f [email protected] < body
Двойной дефис останавливает анализ почты с аргументом -f и передает его в сам sendmail.
не работает. Теперь к адресу добавлено 3 адреса. адрес, адрес f и локальный домен
Можете ли вы помочь, раньше это работало, но после недавнего обновления оно больше не работает, оно просто пытается дополнительно отправить электронное письмо на -f @ hostname
Не работает на CentOS 6.3. Попробуйте ответить @ ubuntu-fanboy ниже, используя флаг -r.
Команда GNU mailutils 'mail' не позволяет вам этого делать (по крайней мере, легко). Но если вы устанавливаете 'heirloom-mailx', его почтовая команда (mailx) имеет параметр '-r', чтобы переопределить значение по умолчанию '$ USER @ $ HOSTNAME' из поля.
echo "Hello there" | mail -s "testing" -r [email protected] [email protected]
Работает для mailx, но не для mail.
$ ls -l /usr/bin/mail lrwxrwxrwx 1 root root 22 2010-12-23 08:33 /usr/bin/mail -> /etc/alternatives/mail $ ls -l /etc/alternatives/mail lrwxrwxrwx 1 root root 23 2010-12-23 08:33 /etc/alternatives/mail -> /usr/bin/heirloom-mailx
Возможно, будет полезно узнать, что команда GNU mailutils mail, предустановленная в Ubuntu 14.04 LTS, поддерживает параметр -r, поэтому вы можете легко установить адрес отправителя.
Я тестировал Debian 9.11, и этот вариант тоже работает.
Спасибо BEAU
mail -s "Subject" [email protected] -- -f [email protected]
Я только что нашел это, и у меня это работает. На страницах руководства для почты 8.1 на CentOS 5 об этом не упоминается. Для варианта -f на странице руководства говорится:
-f Read messages from the file named by the file operand instead of the system mailbox. (See also folder.) If no file operand is specified, read messages from mbox instead of the system mailbox.
Так или иначе, это здорово, спасибо.
-f, конечно, не подходит для mail в вашем примере, поскольку ему предшествует --. Эта опция передается вашему MTA
Я не знаю, так ли это с другими ОС, но в OpenBSD команда mail имеет такой синтаксис:
mail to-addr ... -sendmail-options ...
sendmail имеет параметр -f, где вы указываете адрес электронной почты для поля FROM :. У меня работает следующая команда.
mail [email protected] -f [email protected]
Работает на меня! (Также openBSD - Macbook pro.)
Обновление - получатель электронной почты по-прежнему видит имя моей локальной учетной записи до [email protected], например, «Aeonaut [email protected]». Есть идеи, как это изменить?
У меня не работает. (os x mountain lion) "mail: нельзя давать -f и кому послать."
В CentOS 5.5 самый простой способ установить значение по умолчанию из домена - это изменить файл hosts. Если ваш файл hosts содержит ваш WAN / общедоступный IP-адрес, просто измените первое имя хоста, указанное для него. Например, ваш файл hosts может выглядеть так:
...
11.22.33.44 localhost default-domain whatever-else.com
...
Чтобы он отправлялся с сайта any-else.com, просто измените его так, чтобы вначале был указан something-else.com, например:
...
11.22.33.44 whatever-else.com localhost default-domain
...
Я не могу говорить о каком-либо другом дистрибутиве (или даже о версии CentOS), но в моем конкретном случае все вышеперечисленное работает отлично.
Плюс к этому хорошо использовать -F option для указания имени отправителя.
Что-то вроде этого:
mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com
Или просто посмотрите доступные варианты: http://www.courier-mta.org/sendmail.html
mail -s "$(echo -e "This is the subject\nFrom: Paula <[email protected]>\n
Reply-to: [email protected]\nContent-Type: text/html\n")"
[email protected] < htmlFileMessage.txt
Вышеупомянутое - мое решение .... любые дополнительные заголовки могут быть добавлены сразу после от и до ответа на ... просто убедитесь, что вы знаете синтаксис заголовков, прежде чем добавлять их .... это отлично сработало для меня.
Это работает для меня с вашим примером ... Когда я меняю тему адреса электронной почты и т. д., Отображаются все заголовки?
Также можно установить как имя От, так и адрес отправителя, используя что-то вроде:
echo test | mail -s "test" [email protected] -- -F'Some Name<[email protected]>' -t
По какой-то причине передача -F'Some Name' и [email protected] не работает, но передача -t в sendmail работает и «легко».
В CentOS это сработало для меня:
echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
Предоставленные ранее ответы не помогли мне в CentOS5. Я установил mutt. Вариантов много. С mutt вы делаете это так:
export [email protected]
export [email protected]
mutt -s Testing [email protected]
Я получил это из всех приведенных выше ответов. Когда я пробовал каждый из них, у меня ничего не получалось. Я сделал много следов и ошибок, объединив все вышеперечисленные ответы и пришел к этому. Я не уверен, работает ли это для вас, но у меня это сработало на Ununtu 12.04 и RHEL 5.4.
echo "This is the body of the mail" | mail -s 'This is the subject' '<[email protected]>,<[email protected]>' -- -F '<SenderName>' -f '<[email protected]>'
Можно отправить письмо любому количеству людей, добавив любое количество идентификаторов получателя, и письмо будет отправлено Имя отправителя из [email protected]
Надеюсь это поможет.
это не работает в / usr / bin / mail, возможно, ваша команда предназначена для sendmail.
В Debian 7 я все еще не мог правильно установить адрес отправителя, используя ответы на этот вопрос (всегда будет имя хоста сервера), но решил это таким образом.
Установить семейная реликвия
apt-get install heirloom-mailx
убедитесь, что это значение по умолчанию.
update-alternatives --config mailx
Напишите сообщение.
mail -s "Testing from & replyto" -r "sender <[email protected]>" -S replyto = "[email protected]" [email protected] < <(echo "Test message")
Что делает эта команда update-alternatives? Это дает мне 3 варианта, и я озадачен.
echo "body" | mail -S [email protected] "Hello"
-S позволяет вам указать множество строковых параметров, что, безусловно, является самым простым способом изменения заголовков и тому подобного.
эхо "тест" | mailx -r [email protected] -s 'test' [email protected]
Работает в OpenBSD.
Что позволило мне иметь настраиваемый адрес для ответа на Ubuntu 16.04 с кодировкой UTF-8 и прикрепленным файлом:
Установите почтовый клиент:
sudo apt-get install heirloom-mailx
Отредактируйте конфигурацию SMTP:
sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
[email protected]
AuthPass=???
UseSTARTTLS=YES
Отправьте письмо:
sender='[email protected]'
recipient='[email protected]'
zipfile = "results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.
Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto = "$sender" -a $zipfile $recipient < <(echo $mailBody)
Ни одно из вышеперечисленных решений не работает для меня ...
#!/bin/bash
# Message
echo "My message" > message.txt
# Mail
subject = "Test"
mail_header = "From: John Smith <[email protected]>"
recipients = "[email protected]"
#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
Что это за разновидность Unix? а какая версия почты? Просто чтобы знать, где это не работает.